This is the mail archive of the gcc-bugs@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]

[Bug tree-optimization/31169] Bootstrap comparison error at revision 122821



------- Comment #10 from rguenth at gcc dot gnu dot org  2007-03-15 17:19 -------
Now what is interesting despite of being wrong or not is that we use an
index only for the MEM ref:

<L11>:;
  D.1641_16 = D.1589_4 + -1;
  D.1642_15 = &regexp_3(D)->regexp.oneof.regexps[D.1641_16];
  ivtmp___31_21 = (long unsigned int) D.1642_15;

  # ivtmp___31_1 = PHI <ivtmp___31_12(5), ivtmp___31_21(7)>
  # i_18 = PHI <i_11(5), i_5(7)>
<L2>:;
  D.1592_10 = MEM[index: ivtmp___31_1];
  process_alts_for_forming_states (D.1592_10);
  i_11 = i_18 + -1;
  if (i_11 >= 0) goto <L0>; else goto <L4>;

the stage2 compiler then derives a loop trip count based on the size of
the regexp->regexp.oneof.regexps[] array it seems (a size of 3 actually)
and replaces the induction variable by the MEM index.

This doesn't look like a wrong transformation, but I fail to see how
this could be different from the stage1 and stage2 compiler.

Zdenek, are we supposed to get a index-only mem-ref?


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rakdver at gcc dot gnu dot
                   |                            |org


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31169


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