Bug#239569: ICE in verify_wide_reg.
Package: gcc
Version: 3.3.3-2
Severity: normal
Hi...
The attached code causes the following behaviour:
hawkinsp@vice:~/tmp$ gcc -O test6.c -o test6
test6.c: In function `float_module21':
test6.c:21: internal compiler error: in verify_wide_reg, at flow.c:549
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.
test6.c is actually a stripped down and cleaned up version of the
preprocessed source code from library/float.c in the Mercury Release
of the Day available from:
http://www.cs.mu.oz.au/research/mercury/download/files/beta-releases/rotd/mercury-compiler-rotd_2004_03_19_unstable-1.src.rpm
(run it through rpm2cpio and extract the resulting cpio archive to get a
tarball).
The testcase is the output of the Mercury compiler itself, hence the slightly
strange code.
=)
Peter
int MR_is_inf(double);
register unsigned int MR_mr1 __asm__ ("edi");
register unsigned int MR_mr2 __asm__ ("ebx");
static void
float_module21 (void)
{
(MR_mr2) = 0;
(MR_mr2) = MR_is_inf (0.0);
if (!(MR_mr2))
{
goto mercury__float__is_nan_or_inf_1_0_i7;
}
__asm__ __volatile__ ("/* " "mercury__float__is_nan_or_inf_1_0_i7" "*/\n");
mercury__float__is_nan_or_inf_1_0_i7:
goto *(((void *) ((MR_mr1))));
}
Reply to: