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