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/29716] [4.2/4.3 Regression] Wrong code with arrays



------- Comment #4 from rguenth at gcc dot gnu dot org  2006-11-04 22:33 -------
The points-to-set for i is wrong.  The difference before the two aliasing
passes are

  iD.1615_8 = &aD.1614[3];
  iD.1615_9 = iD.1615_8 - 4B;

  goto <bb 4> (<L1>);
  # SUCC: 4 (fallthru)

  # BLOCK 3
  # PRED: 4 (true)
<L0>:;
  #   VUSE <tD.1611_10>;
  t.0D.1619_11 = tD.1611;
  *iD.1615_1 = t.0D.1619_11;
  iD.1615_12 = iD.1615_1 - 4B;
  # SUCC: 4 (fallthru)

  # BLOCK 4
  # PRED: 2 (fallthru) 3 (fallthru)
  # iD.1615_1 = PHI <iD.1615_9(2), iD.1615_12(3)>;
<L1>:;
  if (&aD.1614 < iD.1615_1) goto <L0>; else goto <L2>;
  # SUCC: 3 (true) 5 (false)

vs.

  # BLOCK 3
  # PRED: 3 (true,exec) 2 (fallthru,exec)
  # SFT.3D.1626_29 = PHI <SFT.3D.1626_20(3), SFT.3D.1626_3(2)>;
  # SFT.2D.1625_28 = PHI <SFT.2D.1625_19(3), SFT.2D.1625_5(2)>;
  # SFT.1D.1624_27 = PHI <SFT.1D.1624_18(3), SFT.1D.1624_7(2)>;
  # iD.1615_26 = PHI <iD.1615_12(3), &aD.1614[2](2)>;
<L0>:;
  #   VUSE <tD.1611_10>;
  t.0D.1619_11 = tD.1611;
  #   SFT.1D.1624_18 = V_MAY_DEF <SFT.1D.1624_27>;
  #   SFT.2D.1625_19 = V_MAY_DEF <SFT.2D.1625_28>;
  #   SFT.3D.1626_20 = V_MAY_DEF <SFT.3D.1626_29>;
  *iD.1615_26 = t.0D.1619_11;
  iD.1615_12 = iD.1615_26 - 4B;
  if (&aD.1614 < iD.1615_12) goto <L0>; else goto <L2>;
  # SUCC: 3 (true,exec) 4 (loop_exit,false,exec)

so do we miss it because it's a PHI argument or because in the first case
we point one after the last element of the array and in the second case to
the last element?

Danny, does this ring a bell?


-- 

rguenth at gcc dot gnu dot org changed:

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


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


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