------- Comment #6 from amylaar at gcc dot gnu dot org 2006-01-30 18:38 ------- (In reply to comment #2) > Strange - both on mainline and the 4.1 branch, I can reproduce this (albeit > with > a more sensible variable name of "u") for i686-pc-linux-gnu native, but not > for > a cross to sh-elf. Yet the failing mark_addressable call is done for i686 > from > the gimplifier.
FWIW, the optimization that malfunctions applies to calls of functions that return their value in memory. Because the s_1 type is not returned in memory on sh-elf, the testcase doesn't trigger there. For the test to trigger, s_1 has to be an aggregate (to satisfy the gimple test that this is not a register) which is returned in memory (so that the optimization is relevant), and the return value must be assigne to a variable that is declared as register. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26004