This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [tree-ssa] dom1 bug.


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]