[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Tinycc-devel] TCC produced wrong code (yarpgen v1)

From: Michael Matz
Subject: Re: [Tinycc-devel] TCC produced wrong code (yarpgen v1)
Date: Tue, 7 Mar 2023 18:23:40 +0100 (CET)
User-agent: Alpine 2.21 (LSU 202 2017-01-01)


On Sat, 18 Feb 2023, wine.dev@web.de wrote:

While trying yarpgen (v1 branch of github.com/intel/yarpgen ),
various test files compiled with tcc (x86_64@linux) produce a wrong result.

I compared the first failed program with gcc
and found an "if" section in the example code,
where the compiled programs from both compiler
(tcc and gcc-12) enter the "true" section,
but in the middle of the "if" sections,
the tcc compiled code breaks out of the "true" part of the "if" section
and execution continiues at the start of the "false" section.

Very strange....

The problem (at least for the 'yarpgen -s 5' generated program) is fixed in mob now. I haven't tried yarpgen on more than your reported example, so you might want to check yourself.

FWIW, the problem was that too complicated expressions involving short-circuiting || and && with constant operands sometimes left code generation deactivated to further statements outside the expression (which is why it seemed to jump from inside the true if block to some random other place).


Any idea, how to nail down the issue?

I already increased some internal stacks:
#define IFDEF_STACK_SIZE    964
#define VSTACK_SIZE         9256
#define STRING_MAX_SIZE     91024
#define TOKSTR_MAX_SIZE     9256
#define PACK_STACK_SIZE     98

The example source works with clang (v15) and gcc (v12)
and is attached to a bug report:

Tinycc-devel mailing list

reply via email to

[Prev in Thread] Current Thread [Next in Thread]