Hi Jeff,
The code there would solve this problem, but the approach is is overly
cautious, since it disables the optimization for all extensions that
increase the number of hard registers used. Some of these will be
viable candidates, provided that the extra hard registers are no used.
(This is certainly true for the RL78, where the (patched) optimization
does improve code, even though the widening does use extra registers).
Nick -- can you pass along your testcode?
Sure - this is for the RL78 toolchain. In theory the problem is
generic, but I have not tested other toolchains.
Compile the gcc.c-torture/execute/pr42833.c or
gcc.c-torture/execute/strct-stdarg-1.c tests at -O1 or higher with -free
also specified on the command line. Without -free these tests pass.
With -free they fail.
Cheers
Nick