------- Comment #6 from pinskia at gcc dot gnu dot org  2007-06-02 00:21 -------
(In reply to comment #5)
> We moved a multiply, which is outside of loop in source, into
> a loop. I don't think gcc should do it with any optimization
> flag, including -ffast-math.

Yes but this is still just a missed optimization rather than a wrong code
issue.

reassoc2 is not checking if it is going to move stuff in the loop.
--- foo.c.107t.recip    2007-06-01 17:18:04.000000000 -0700
+++ foo.c.108t.reassoc2 2007-06-01 17:18:04.000000000 -0700
@@ -178,15 +178,15 @@ cmn_prior (incep, varnorm, nfr, ceplen,
   goto <bb 8> (<L64>);

 <L102>:;
-  D.1857_156 = nframe_lsm.64_93 + 1;
   D.1858_191 = (unsigned int) nfr_17(D);
   D.1859_190 = D.1858_191 + 0x0ffffffff;
   D.1860_52 = (int32) D.1859_190;
+  D.1857_156 = nframe_lsm.64_93 + 1;
   nframe_lsm.64_35 = D.1857_156 + D.1860_52;
-  D.1861_38 = nframe_lsm.64_93 + 1;
   D.1862_37 = (unsigned int) nfr_17(D);
   D.1863_155 = D.1862_37 + 0x0ffffffff;
   D.1864_6 = (int) D.1863_155;
+  D.1861_38 = nframe_lsm.64_93 + 1;
   nframe.8_36 = D.1861_38 + D.1864_6;
   # nframe_73 = VDEF <nframe_134>
   nframe = nframe_lsm.64_35;
@@ -217,7 +217,7 @@ cmn_prior (incep, varnorm, nfr, ceplen,
   D.1890_104 = (unsigned int) i_14;
   # VUSE <SMT.14_63>
   D.1709_89 = MEM[base: sum.6_87, index: D.1890_104, step: 4];
-  D.1710_90 = D.1709_89 * sf_77;
+  D.1710_90 = sf_77 * D.1709_89;
   D.1891_102 = (unsigned int) i_14;
   # SMT.14_183 = VDEF <SMT.14_63>
   MEM[base: cur_mean.3_82, index: D.1891_102, step: 4] = D.1710_90;


-- 

pinskia at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dberlin at gcc dot gnu dot
                   |                            |org
             Status|UNCONFIRMED                 |NEW
     Ever Confirmed|0                           |1
           Keywords|                            |missed-optimization
   Last reconfirmed|0000-00-00 00:00:00         |2007-06-02 00:21:27
               date|                            |
            Summary|-fast-math moves multiply   |reassoc can more extra
                   |into a loop                 |calculations into a loop


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

Reply via email to