[Bug tree-optimization/45256] Missed arithmetic simplification at tree level

2021-09-14 Thread pinskia at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45256

--- Comment #4 from Andrew Pinski  ---
With IVOPTs we get:
  # ivtmp.13_97 = PHI 
  _34 = MEM[(const __be32 *)_28 + -4B + ivtmp.13_97 * 4];
  _36 = MEM[(const __be32 *)_27 + -4B + ivtmp.13_97 * 4];
  if (_34 != _36)
goto ; [5.50%]
  else
goto ; [94.50%]

   [local count: 217424209]:
  _22 = (int) ivtmp.13_97;
  _40 = _22 * 32;
  xb_37 = _34 ^ _36;
  iftmp.1_53 = __fswab32 (xb_37);
  __asm__("clz  %0, %1" : "=r" ret_54 : "r" iftmp.1_53 : "cc");
  ret_56 = 32 - ret_54;
  _57 = _40 - ret_56;
  MEM[(struct ipv6_saddr_score *) + 32B].matchlen = _57;
  if (_57 != 0)
goto ; [0.00%]
  else
goto ; [100.00%]

So there is no extra add one any more.
BUT with -fno-ivopts I still see the add one.

[Bug tree-optimization/45256] Missed arithmetic simplification at tree level

2010-09-07 Thread ibolton at gcc dot gnu dot org


--- Comment #2 from ibolton at gcc dot gnu dot org  2010-09-07 13:05 ---
(In reply to comment #1)
 Created an attachment (id=21454)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21454action=view) [edit]
 Testcase
 

OK.  I can see this happening on trunk, when compiled as follows:

arm-none-linux-gnueabi/obj/gcc3/gcc/cc1 -O2 pr45256.i -fdump-tree-all
-fdump-rtl-all.

The 148t.optimized dump shows exactly what has been posted above, where
effectively 32 is both added and then subtracted.

The 183r.dce dump still shows this extra work happening and the 184r.combine
dump shows that it has been optimised away.  It should be possible to do this
optimisation at the tree-level, so this bug is confirmed.

Should I check whether this happens for 4.4 and 4.5 too?


-- 

ibolton at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Keywords||missed-optimization
  Known to fail||4.6.0
   Last reconfirmed|-00-00 00:00:00 |2010-09-07 13:05:49
   date||


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



[Bug tree-optimization/45256] Missed arithmetic simplification at tree level

2010-09-07 Thread pinskia at gcc dot gnu dot org


--- Comment #3 from pinskia at gcc dot gnu dot org  2010-09-07 18:41 ---
ret_59 = (i_53 + 1) * 32 - (32 - ret_56)

So this looks like a re-association issue.


-- 


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



[Bug tree-optimization/45256] Missed arithmetic simplification at tree level

2010-08-11 Thread bernds at gcc dot gnu dot org


--- Comment #1 from bernds at gcc dot gnu dot org  2010-08-11 15:19 ---
Created an attachment (id=21454)
 -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=21454action=view)
Testcase


-- 


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