public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/45256] Missed arithmetic simplification at tree level
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 ` 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
2 siblings, 0 replies; 4+ messages in thread
From: bernds at gcc dot gnu dot org @ 2010-08-11 15:19 UTC (permalink / raw)
To: gcc-bugs
------- 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=21454&action=view)
Testcase
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45256
^ permalink raw reply [flat|nested] 4+ messages in thread
* [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; 4+ 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] 4+ messages in thread
* [Bug tree-optimization/45256] Missed arithmetic simplification at tree level
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
2 siblings, 0 replies; 4+ messages in thread
From: ibolton at gcc dot gnu dot org @ 2010-09-07 13:09 UTC (permalink / raw)
To: gcc-bugs
------- 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=21454&action=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|0000-00-00 00:00:00 |2010-09-07 13:05:49
date| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45256
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug tree-optimization/45256] Missed arithmetic simplification at tree level
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
2 siblings, 0 replies; 4+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2010-09-07 18:42 UTC (permalink / raw)
To: gcc-bugs
------- 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
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-09-07 18:42 UTC | newest]
Thread overview: 4+ 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
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).