This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: [tree-ssa] dom1 bug.
- From: law at redhat dot com
- To: Andrew MacLeod <amacleod at redhat dot com>
- Cc: gcc mailing list <gcc at gcc dot gnu dot org>
- Date: Wed, 17 Dec 2003 10:47:50 -0700
- Subject: Re: [tree-ssa] dom1 bug.
- Reply-to: law at redhat dot com
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