[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: Domingo Alvarez Duarte
Subject: Re: [Tinycc-devel] TCC produced wrong code (yarpgen v1)
Date: Wed, 8 Mar 2023 12:14:59 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.7.1

Sorry !

It was my fault I was testing with a not mob tinycc, using mob the failed example I've showed before doesn't happen.

Cheers !

On 8/3/23 12:02, Domingo Alvarez Duarte wrote:
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:


/*SEED 2003917550*/


Cheers !

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

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

Tinycc-devel mailing list

reply via email to

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