[tree-ssa] dom1 bug.
law@redhat.com
law@redhat.com
Wed Dec 17 19:41:00 GMT 2003
In message <1071671615.13039.311.camel@p4>, Andrew MacLeod writes:
>
>
>Here's the first bit of fallout from using my operand freelist.
>
>dom1 appears to lose VDEFs from time to time when it rewrites stmts. A
>lot of the failures I am seeing are related to dropped VDEFS.
>
>This illustrates the point: Compile with -O2 and look at the dom1
>listing
>
>Andrew
>
>
>/* This is testcase 990130-1.c. Compile with -O2 */
[ ... ]
More info.
mark_new_vars_to_rename _does_ mark the affected variable for
re-renaming.
And the first thing we do after leaving the dominator optimizer
is perform the re-renaming which leaves us with:
main ()
{
int T.2;
int count.1;
int * <D1069>;
int T.4;
int * T.3;
int count.5;
int * retval.6;
# BLOCK 0
# PRED: ENTRY (fallthru)
# VUSE <count_1>;
count.1_2 = count;
T.2_3 = count.1_2 + 1;
# count_10 = VDEF <count_1>;
count = T.2_3;
<D1069>_5 = &dummy;
# SUCC: 1 (fallthru)
# BLOCK 1
# PRED: 0 (fallthru)
<L0>:;
retval.6_6 = &dummy;
T.3_7 = &dummy;
# VUSE <dummy_8>;
T.4_9 = dummy;
# dummy_11 = VDEF <dummy_8>;
__asm__("":"=r" dummy:"0" T.4_9);
# VUSE <count_10>;
count.5_12 = count;
if (count.5_12 != 1) goto <L1>; else goto <L2>;
# SUCC: 3 (false) 2 (true)
# BLOCK 2
# PRED: 1 (true)
<L1>:;
abort ();
# SUCC:
# BLOCK 3
# PRED: 1 (false)
<L2>:;
exit (0);
# SUCC:
}
Which looks right to me.
So why again is this causing a problem? Everything seems to be working
as expected.
jeff
More information about the Gcc
mailing list