------- 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