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 rtl-optimization/19580] [4.1/4.2/4.3 Regression] missed load/store motion



------- Comment #38 from rguenth at gcc dot gnu dot org  2008-03-28 13:40 -------
Fixed in GCC 4.4 with the store-motion rewrite to use an alias-oracle:

<bb 3>:
  r_I_lsm.18 = r[5];
  r_I_lsm.13 = r[0];
  r_I_lsm.14 = r[1];
  r_I_lsm.15 = r[2];
  r_I_lsm.16 = r[3];
  r_I_lsm.17 = r[4];
  r_I_lsm.27 = r_I_lsm.18;

<bb 4>:
  r_I_lsm.13 = r_I_lsm.13 + r_I_lsm.27;
  r_I_lsm.14 = r_I_lsm.14 + r_I_lsm.13;
  r_I_lsm.15 = r_I_lsm.14 + r_I_lsm.15;
  r_I_lsm.16 = r_I_lsm.15 + r_I_lsm.16;
  r_I_lsm.17 = r_I_lsm.16 + r_I_lsm.17;
  r_I_lsm.18 = r_I_lsm.17 + r_I_lsm.18;
  n.26 = n.26 + -1;
  r_I_lsm.28 = r_I_lsm.27;
  r_I_lsm.27 = r_I_lsm.18;
  if (n.26 != 0)
    goto <bb 4>;
  else
    goto <bb 5>;

<bb 5>:
  r_I_lsm.27 = r_I_lsm.28;
  r[0] = r_I_lsm.13;
  r[1] = r_I_lsm.14;
  r[2] = r_I_lsm.15;
  r[3] = r_I_lsm.16;
  r[4] = r_I_lsm.17;
  r[5] = r_I_lsm.18;

I'll add a testcase to the testsuite.


-- 

rguenth at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
      Known to work|3.3.3 2.95.3 3.0.4 3.2.3    |3.3.3 2.95.3 3.0.4 3.2.3
                   |                            |4.4.0
            Summary|[4.1/4.2/4.3/4.4 Regression]|[4.1/4.2/4.3 Regression]
                   |missed load/store motion    |missed load/store motion


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


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