tinycc-devel
[Top][All Lists]
Advanced

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

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


From: Domingo Alvarez Duarte
Subject: Re: [Tinycc-devel] TCC produced wrong code (yarpgen v1)
Date: Wed, 8 Mar 2023 12:02:40 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1

Using this script:

====

yarpgen --std=c
#../c2m driver.c func.c -ei
gcc -o ygcc driver.c func.c && ./ygcc
tinycc-env tcc -o ytcc driver.c func.c && ./ytcc

====

It gives different result than gcc after 4 trials:

====

check-it.sh
/*SEED 2003917550*/
5782830862525388415
1507557374623343254

====

Cheers !

On 7/3/23 18:23, Michael Matz wrote:
Hey,

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).


Ciao,
Michael.


Any idea, how to nail down the issue?

I already increased some internal stacks:
#define INCLUDE_STACK_SIZE  932
#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:
https://savannah.nongnu.org/bugs/?63816




_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel


_______________________________________________
Tinycc-devel mailing list
Tinycc-devel@nongnu.org
https://lists.nongnu.org/mailman/listinfo/tinycc-devel



reply via email to

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