public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/45256] New: Missed arithmetic simplification at tree level
@ 2010-08-11 15:19 bernds at gcc dot gnu dot org
2010-08-11 15:19 ` [Bug tree-optimization/45256] " bernds at gcc dot gnu dot org
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: bernds at gcc dot gnu dot org @ 2010-08-11 15:19 UTC (permalink / raw)
To: gcc-bugs
I'll attach a testcase, which shows a missed simplification at tree level:
D.2276_42 = i_53 + 1;
D.2277_43 = D.2276_42 * 32;
iftmp.3_55 = __fswab32 (xb_54);
__asm__("clz %0, %1" : "=r" ret_56 : "r" iftmp.3_55 : "cc");
ret_58 = 32 - ret_56;
ret_59 = D.2277_43 - ret_58;
In effect, the constant 32 is both added and subtracted from the result. With
a four-insn combiner, this is caught at the RTL stage (compiling for Thumb-1):
- add r2, r2, #1
lsl r2, r2, #5
- add r3, r3, r2
- sub r3, r3, #32
+ add r3, r2, r3
--
Summary: Missed arithmetic simplification at tree level
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: tree-optimization
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: bernds at gcc dot gnu dot org
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: arm-none-linux-gnueabi
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45256
^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <bug-45256-4@http.gcc.gnu.org/bugzilla/>]
* [Bug tree-optimization/45256] Missed arithmetic simplification at tree level
[not found] <bug-45256-4@http.gcc.gnu.org/bugzilla/>
@ 2021-09-15 0:54 ` pinskia at gcc dot gnu.org
0 siblings, 0 replies; 5+ messages in thread
From: pinskia at gcc dot gnu.org @ 2021-09-15 0:54 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=45256
--- Comment #4 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
With IVOPTs we get:
# ivtmp.13_97 = PHI <ivtmp.13_96(12), 1(7)>
_34 = MEM[(const __be32 *)_28 + -4B + ivtmp.13_97 * 4];
_36 = MEM[(const __be32 *)_27 + -4B + ivtmp.13_97 * 4];
if (_34 != _36)
goto <bb 9>; [5.50%]
else
goto <bb 12>; [94.50%]
<bb 9> [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 *)&scores + 32B].matchlen = _57;
if (_57 != 0)
goto <bb 13>; [0.00%]
else
goto <bb 10>; [100.00%]
So there is no extra add one any more.
BUT with -fno-ivopts I still see the add one.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-09-15 0:54 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-11 15:19 [Bug tree-optimization/45256] New: Missed arithmetic simplification at tree level bernds at gcc dot gnu dot org
2010-08-11 15:19 ` [Bug tree-optimization/45256] " bernds at gcc dot gnu dot org
2010-09-07 13:09 ` ibolton at gcc dot gnu dot org
2010-09-07 18:42 ` pinskia at gcc dot gnu dot org
[not found] <bug-45256-4@http.gcc.gnu.org/bugzilla/>
2021-09-15 0:54 ` pinskia at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).