public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug middle-end/23294] New: fold does not fold a*2-a to a @ 2005-08-09 3:06 pinskia at gcc dot gnu dot org 2005-08-10 0:45 ` [Bug middle-end/23294] " pinskia at gcc dot gnu dot org ` (5 more replies) 0 siblings, 6 replies; 9+ messages in thread From: pinskia at gcc dot gnu dot org @ 2005-08-09 3:06 UTC (permalink / raw) To: gcc-bugs I noticed this while running a profiledbootstrap and looking through simplify-rtx.c. Take the following function: int f(int a) { return a*2-a; } We don't optimizate a*2-a to just a on the tree level but do in combine, we do. -- Summary: fold does not fold a*2-a to a Product: gcc Version: 4.1.0 Status: UNCONFIRMED Keywords: missed-optimization, TREE Severity: enhancement Priority: P2 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org OtherBugsDependingO 19986 nThis: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23294 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/23294] fold does not fold a*2-a to a 2005-08-09 3:06 [Bug middle-end/23294] New: fold does not fold a*2-a to a pinskia at gcc dot gnu dot org @ 2005-08-10 0:45 ` pinskia at gcc dot gnu dot org 2005-08-10 0:49 ` [Bug middle-end/23294] fold does not fold a*C+a to a*(C+1) or a*C-a to a*(C-1) pinskia at gcc dot gnu dot org ` (4 subsequent siblings) 5 siblings, 0 replies; 9+ messages in thread From: pinskia at gcc dot gnu dot org @ 2005-08-10 0:45 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2005-08-10 00:45 ------- Here is an example which is __not__ folded back and shows that we don't optimize it on the RTL level at least for i686: int f(int a) { return a*6-a; } int f1(int a) { return a*5; } -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23294 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/23294] fold does not fold a*C+a to a*(C+1) or a*C-a to a*(C-1) 2005-08-09 3:06 [Bug middle-end/23294] New: fold does not fold a*2-a to a pinskia at gcc dot gnu dot org 2005-08-10 0:45 ` [Bug middle-end/23294] " pinskia at gcc dot gnu dot org @ 2005-08-10 0:49 ` pinskia at gcc dot gnu dot org 2005-08-10 9:24 ` rguenth at gcc dot gnu dot org ` (3 subsequent siblings) 5 siblings, 0 replies; 9+ messages in thread From: pinskia at gcc dot gnu dot org @ 2005-08-10 0:49 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2005-08-10 00:49 ------- Confirmed. a*C+a is also not simplified. -- What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed| |1 Last reconfirmed|0000-00-00 00:00:00 |2005-08-10 00:49:31 date| | Summary|fold does not fold a*2-a to |fold does not fold a*C+a to |a |a*(C+1) or a*C-a to a*(C-1) http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23294 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/23294] fold does not fold a*C+a to a*(C+1) or a*C-a to a*(C-1) 2005-08-09 3:06 [Bug middle-end/23294] New: fold does not fold a*2-a to a pinskia at gcc dot gnu dot org 2005-08-10 0:45 ` [Bug middle-end/23294] " pinskia at gcc dot gnu dot org 2005-08-10 0:49 ` [Bug middle-end/23294] fold does not fold a*C+a to a*(C+1) or a*C-a to a*(C-1) pinskia at gcc dot gnu dot org @ 2005-08-10 9:24 ` rguenth at gcc dot gnu dot org 2005-08-10 10:27 ` pinskia at gcc dot gnu dot org ` (2 subsequent siblings) 5 siblings, 0 replies; 9+ messages in thread From: rguenth at gcc dot gnu dot org @ 2005-08-10 9:24 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From rguenth at gcc dot gnu dot org 2005-08-10 09:23 ------- I believe we can only do so for -fwrapv (but we don't) or for unsigned (which we also don't do). I may look at this somewhen in the future. We also don't canonicalize int f(int a) { return a + a + a; } which I believe we did at some time? -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23294 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/23294] fold does not fold a*C+a to a*(C+1) or a*C-a to a*(C-1) 2005-08-09 3:06 [Bug middle-end/23294] New: fold does not fold a*2-a to a pinskia at gcc dot gnu dot org ` (2 preceding siblings ...) 2005-08-10 9:24 ` rguenth at gcc dot gnu dot org @ 2005-08-10 10:27 ` pinskia at gcc dot gnu dot org 2005-08-26 9:35 ` rguenth at gcc dot gnu dot org 2005-08-26 13:57 ` rguenth at gcc dot gnu dot org 5 siblings, 0 replies; 9+ messages in thread From: pinskia at gcc dot gnu dot org @ 2005-08-10 10:27 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From pinskia at gcc dot gnu dot org 2005-08-10 10:26 ------- (In reply to comment #3) > I believe we can only do so for -fwrapv (but we don't) or for unsigned (which we > also don't do). I may look at this somewhen in the future. Why do you believe that with -fno-wrapv, overflow is undefined so anything can happen. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23294 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/23294] fold does not fold a*C+a to a*(C+1) or a*C-a to a*(C-1) 2005-08-09 3:06 [Bug middle-end/23294] New: fold does not fold a*2-a to a pinskia at gcc dot gnu dot org ` (3 preceding siblings ...) 2005-08-10 10:27 ` pinskia at gcc dot gnu dot org @ 2005-08-26 9:35 ` rguenth at gcc dot gnu dot org 2005-08-26 13:57 ` rguenth at gcc dot gnu dot org 5 siblings, 0 replies; 9+ messages in thread From: rguenth at gcc dot gnu dot org @ 2005-08-26 9:35 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From rguenth at gcc dot gnu dot org 2005-08-26 09:34 ------- I have a patch. -- What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|unassigned at gcc dot gnu |rguenth at gcc dot gnu dot |dot org |org Status|NEW |ASSIGNED Last reconfirmed|2005-08-10 00:49:31 |2005-08-26 09:34:08 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23294 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/23294] fold does not fold a*C+a to a*(C+1) or a*C-a to a*(C-1) 2005-08-09 3:06 [Bug middle-end/23294] New: fold does not fold a*2-a to a pinskia at gcc dot gnu dot org ` (4 preceding siblings ...) 2005-08-26 9:35 ` rguenth at gcc dot gnu dot org @ 2005-08-26 13:57 ` rguenth at gcc dot gnu dot org 5 siblings, 0 replies; 9+ messages in thread From: rguenth at gcc dot gnu dot org @ 2005-08-26 13:57 UTC (permalink / raw) To: gcc-bugs ------- Additional Comments From rguenth at gcc dot gnu dot org 2005-08-26 13:50 ------- Patch posted. -- What |Removed |Added ---------------------------------------------------------------------------- URL| |http://gcc.gnu.org/ml/gcc- | |patches/2005- | |08/msg01555.html http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23294 ^ permalink raw reply [flat|nested] 9+ messages in thread
[parent not found: <bug-23294-6528@http.gcc.gnu.org/bugzilla/>]
* [Bug middle-end/23294] fold does not fold a*C+a to a*(C+1) or a*C-a to a*(C-1) [not found] <bug-23294-6528@http.gcc.gnu.org/bugzilla/> @ 2005-11-19 11:29 ` rguenth at gcc dot gnu dot org 2005-11-19 11:31 ` rguenth at gcc dot gnu dot org 1 sibling, 0 replies; 9+ messages in thread From: rguenth at gcc dot gnu dot org @ 2005-11-19 11:29 UTC (permalink / raw) To: gcc-bugs ------- Comment #7 from rguenth at gcc dot gnu dot org 2005-11-19 11:29 ------- Subject: Bug 23294 Author: rguenth Date: Sat Nov 19 11:29:10 2005 New Revision: 107218 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=107218 Log: 2005-11-19 Richard Guenther <rguenther@suse.de> PR middle-end/23294 * fold-const.c (fold_plusminus_mult_expr): New function. (fold_binary): Use to canonicalize PLUS_EXPR and MINUS_EXPR cases, remove now unnecessary code. * gcc.dg/tree-ssa/pr23294.c: New testcase. Added: trunk/gcc/testsuite/gcc.dg/tree-ssa/pr23294.c Modified: trunk/gcc/ChangeLog trunk/gcc/fold-const.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23294 ^ permalink raw reply [flat|nested] 9+ messages in thread
* [Bug middle-end/23294] fold does not fold a*C+a to a*(C+1) or a*C-a to a*(C-1) [not found] <bug-23294-6528@http.gcc.gnu.org/bugzilla/> 2005-11-19 11:29 ` rguenth at gcc dot gnu dot org @ 2005-11-19 11:31 ` rguenth at gcc dot gnu dot org 1 sibling, 0 replies; 9+ messages in thread From: rguenth at gcc dot gnu dot org @ 2005-11-19 11:31 UTC (permalink / raw) To: gcc-bugs ------- Comment #8 from rguenth at gcc dot gnu dot org 2005-11-19 11:31 ------- Fixed. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|ASSIGNED |RESOLVED Resolution| |FIXED Target Milestone|--- |4.2.0 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23294 ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2005-11-19 11:31 UTC | newest] Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2005-08-09 3:06 [Bug middle-end/23294] New: fold does not fold a*2-a to a pinskia at gcc dot gnu dot org 2005-08-10 0:45 ` [Bug middle-end/23294] " pinskia at gcc dot gnu dot org 2005-08-10 0:49 ` [Bug middle-end/23294] fold does not fold a*C+a to a*(C+1) or a*C-a to a*(C-1) pinskia at gcc dot gnu dot org 2005-08-10 9:24 ` rguenth at gcc dot gnu dot org 2005-08-10 10:27 ` pinskia at gcc dot gnu dot org 2005-08-26 9:35 ` rguenth at gcc dot gnu dot org 2005-08-26 13:57 ` rguenth at gcc dot gnu dot org [not found] <bug-23294-6528@http.gcc.gnu.org/bugzilla/> 2005-11-19 11:29 ` rguenth at gcc dot gnu dot org 2005-11-19 11:31 ` rguenth 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).