------- Additional Comments From uweigand at gcc dot gnu dot org 2005-02-14 22:50 ------- (In reply to comment #5)
> The error occurs when building this with > gnat1 -I<path-to-srcdir>/gcc/ada -O2 pr19865.adb > (I've tested a gnat1 configured for s390-ibm-linux.) I'm sorry, I have mixed up the include statements here. Using this line, I do not get an ICE either. I do get the ICE when using instead gnat1 -I<path-to-builddir>/gcc/ada/rts -O2 pr19865.adb (after I've built the Ada runtime library, of course). This different include apparently causes gnat1 to use a different method of exception handling, which is enough of a difference to cause the ICE to vanish. As to what causes the bug, as Andrew said the SRA pass introduces a new temporary C.56 (in my case C.58), and like in the other test case, the red-phi pass generates a virtual operand (a VUSE in this case) for an unrenamed C.58 in a function call: <L4>:; # VUSE <C.8_13>; # VUSE <pr19865__no_argument_101>; # VUSE <pr19865__cache_args__last_valX_102>; # VUSE <pr19865__cache_args__tableX_103>; # VUSE <FRAME.13_163>; # VUSE <C.7_51>; # VUSE <TMT.42_164>; # VUSE <TMT.43_165>; # VUSE <TMT.45_166>; # VUSE <C.58>; __gnat_rcheck_05 ("pr19865.adb", 37); This subsequently aborts. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19865