public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/36326] New: gimplification of aggregate copies introduces extra aggregate copy
@ 2008-05-25 16:32 rguenth at gcc dot gnu dot org
2008-05-25 16:48 ` [Bug middle-end/36326] " rguenth at gcc dot gnu dot org
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-05-25 16:32 UTC (permalink / raw)
To: gcc-bugs
union X { int i; double x; };
int foo (union X *p)
{
union X x = *p;
return x.x;
}
produces
union X x.0;
x.0 = *p;
x = x.0;
this is not optimized at any point. Using a struct instead usually SRA
is able to remove the extra copy.
--
Summary: gimplification of aggregate copies introduces extra
aggregate copy
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: rguenth at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36326
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug middle-end/36326] gimplification of aggregate copies introduces extra aggregate copy
2008-05-25 16:32 [Bug middle-end/36326] New: gimplification of aggregate copies introduces extra aggregate copy rguenth at gcc dot gnu dot org
@ 2008-05-25 16:48 ` rguenth at gcc dot gnu dot org
2008-05-25 17:19 ` rguenth at gcc dot gnu dot org
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-05-25 16:48 UTC (permalink / raw)
To: gcc-bugs
------- Comment #1 from rguenth at gcc dot gnu dot org 2008-05-25 16:47 -------
Caused by the fix for PR17526.
--
rguenth at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
OtherBugsDependingO| |17526
nThis| |
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36326
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug middle-end/36326] gimplification of aggregate copies introduces extra aggregate copy
2008-05-25 16:32 [Bug middle-end/36326] New: gimplification of aggregate copies introduces extra aggregate copy rguenth at gcc dot gnu dot org
2008-05-25 16:48 ` [Bug middle-end/36326] " rguenth at gcc dot gnu dot org
@ 2008-05-25 17:19 ` rguenth at gcc dot gnu dot org
2008-05-27 14:29 ` matz at gcc dot gnu dot org
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-05-25 17:19 UTC (permalink / raw)
To: gcc-bugs
------- Comment #2 from rguenth at gcc dot gnu dot org 2008-05-25 17:18 -------
Which was just a workaround. It needs proper fixing so that
Index: tree-gimple.c
===================================================================
--- tree-gimple.c (revision 135859)
+++ tree-gimple.c (working copy)
@@ -116,10 +116,7 @@ is_gimple_mem_rhs (tree t)
a renamed variable. Also force a temporary if the type doesn't need
to be stored in memory, since it's cheap and prevents erroneous
tailcalls (PR 17526). */
- if (is_gimple_reg_type (TREE_TYPE (t))
- || (TYPE_MODE (TREE_TYPE (t)) != BLKmode
- && (TREE_CODE (t) != CALL_EXPR
- || ! aggregate_value_p (t, t))))
+ if (is_gimple_reg_type (TREE_TYPE (t)))
return is_gimple_val (t);
else
return is_gimple_formal_tmp_rhs (t);
doesn't regress.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36326
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug middle-end/36326] gimplification of aggregate copies introduces extra aggregate copy
2008-05-25 16:32 [Bug middle-end/36326] New: gimplification of aggregate copies introduces extra aggregate copy rguenth at gcc dot gnu dot org
2008-05-25 16:48 ` [Bug middle-end/36326] " rguenth at gcc dot gnu dot org
2008-05-25 17:19 ` rguenth at gcc dot gnu dot org
@ 2008-05-27 14:29 ` matz at gcc dot gnu dot org
2008-05-28 8:06 ` pinskia at gcc dot gnu dot org
2008-12-03 15:12 ` rguenth at gcc dot gnu dot org
4 siblings, 0 replies; 6+ messages in thread
From: matz at gcc dot gnu dot org @ 2008-05-27 14:29 UTC (permalink / raw)
To: gcc-bugs
------- Comment #3 from matz at gcc dot gnu dot org 2008-05-27 14:28 -------
Subject: Bug 36326
Author: matz
Date: Tue May 27 14:28:02 2008
New Revision: 136033
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=136033
Log:
PR middle-end/36326
* tree-gimple.c (is_gimple_mem_rhs): Remove work-around for
non-BLKmode types.
* tree-tailcall.c (find_tail_calls): Don't mark calls storing
into memory as tail calls.
Modified:
trunk/gcc/ChangeLog
trunk/gcc/tree-gimple.c
trunk/gcc/tree-tailcall.c
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36326
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug middle-end/36326] gimplification of aggregate copies introduces extra aggregate copy
2008-05-25 16:32 [Bug middle-end/36326] New: gimplification of aggregate copies introduces extra aggregate copy rguenth at gcc dot gnu dot org
` (2 preceding siblings ...)
2008-05-27 14:29 ` matz at gcc dot gnu dot org
@ 2008-05-28 8:06 ` pinskia at gcc dot gnu dot org
2008-12-03 15:12 ` rguenth at gcc dot gnu dot org
4 siblings, 0 replies; 6+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2008-05-28 8:06 UTC (permalink / raw)
To: gcc-bugs
------- Comment #4 from pinskia at gcc dot gnu dot org 2008-05-28 08:05 -------
Fixed.
--
pinskia at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |FIXED
Target Milestone|--- |4.4.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36326
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug middle-end/36326] gimplification of aggregate copies introduces extra aggregate copy
2008-05-25 16:32 [Bug middle-end/36326] New: gimplification of aggregate copies introduces extra aggregate copy rguenth at gcc dot gnu dot org
` (3 preceding siblings ...)
2008-05-28 8:06 ` pinskia at gcc dot gnu dot org
@ 2008-12-03 15:12 ` rguenth at gcc dot gnu dot org
4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu dot org @ 2008-12-03 15:12 UTC (permalink / raw)
To: gcc-bugs
------- Comment #5 from rguenth at gcc dot gnu dot org 2008-12-03 15:11 -------
Subject: Bug 36326
Author: rguenth
Date: Wed Dec 3 15:10:03 2008
New Revision: 142396
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=142396
Log:
2008-12-03 Richard Guenther <rguenther@suse.de>
PR middle-end/36326
* gimplify.c (is_gimple_mem_or_call_rhs): Remove work-around for
non-BLKmode types.
* gcc.dg/tree-ssa/pr36326.c: New testcase.
Added:
trunk/gcc/testsuite/gcc.dg/tree-ssa/pr36326.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/gimplify.c
trunk/gcc/testsuite/ChangeLog
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36326
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-12-03 15:12 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-05-25 16:32 [Bug middle-end/36326] New: gimplification of aggregate copies introduces extra aggregate copy rguenth at gcc dot gnu dot org
2008-05-25 16:48 ` [Bug middle-end/36326] " rguenth at gcc dot gnu dot org
2008-05-25 17:19 ` rguenth at gcc dot gnu dot org
2008-05-27 14:29 ` matz at gcc dot gnu dot org
2008-05-28 8:06 ` pinskia at gcc dot gnu dot org
2008-12-03 15:12 ` 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).