public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/15054] New: Bad code due to overlapping stack temporaries
@ 2004-04-21 19:25 uweigand at gcc dot gnu dot org
2004-04-21 19:27 ` [Bug c++/15054] " uweigand at gcc dot gnu dot org
` (16 more replies)
0 siblings, 17 replies; 18+ messages in thread
From: uweigand at gcc dot gnu dot org @ 2004-04-21 19:25 UTC (permalink / raw)
To: gcc-bugs
The testcase appended below triggers the abort,
because two temporaries that are concurrently
used get assigned the same stack slot; thus the
constructor of the 'pointer' temporary built
inside the 'element' destructor will clobber
the 'canary' member of the current 'element'.
To reproduce, build the file with -O (both
-O0 and -O2 work correctly).
extern "C" void abort (void);
struct pointer
{
void* ptr;
pointer(void* x = 0) : ptr(x) {}
pointer(const pointer& x) : ptr(x.ptr) {}
};
struct element
{
int canary;
element() : canary(123) { }
~element() { pointer(); if (canary != 123) abort (); }
};
inline pointer
insert(const element& x)
{
return pointer(new element(x));
}
int
main (void)
{
insert(element());
return 0;
}
--
Summary: Bad code due to overlapping stack temporaries
Product: gcc
Version: 3.4.0
Status: UNCONFIRMED
Keywords: wrong-code
Severity: normal
Priority: P2
Component: c++
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: uweigand at gcc dot gnu dot org
CC: gcc-bugs at gcc dot gnu dot org
GCC target triplet: s390-ibm-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug c++/15054] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
@ 2004-04-21 19:27 ` uweigand at gcc dot gnu dot org
2004-04-21 19:49 ` [Bug c++/15054] [3.3/3.4/3.5 Regression] " pinskia at gcc dot gnu dot org
` (15 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: uweigand at gcc dot gnu dot org @ 2004-04-21 19:27 UTC (permalink / raw)
To: gcc-bugs
--
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Ever Confirmed| |1
Last reconfirmed|0000-00-00 00:00:00 |2004-04-21 19:14:30
date| |
Target Milestone|--- |3.4.1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug c++/15054] [3.3/3.4/3.5 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
2004-04-21 19:27 ` [Bug c++/15054] " uweigand at gcc dot gnu dot org
@ 2004-04-21 19:49 ` pinskia at gcc dot gnu dot org
2004-04-21 20:51 ` [Bug middle-end/15054] " pinskia at gcc dot gnu dot org
` (14 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-04-21 19:49 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2004-04-21 19:27 -------
Confirmed. A regression from 3.0.4, it does not work in 3.2.3 either.
--
What |Removed |Added
----------------------------------------------------------------------------
Severity|normal |critical
Known to fail| |3.3.3 3.2.3 3.4.0 3.5.0
Known to work| |3.0.4
Summary|Bad code due to overlapping |[3.3/3.4/3.5 Regression] Bad
|stack temporaries |code due to overlapping
| |stack temporaries
Target Milestone|3.4.1 |3.3.4
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.3/3.4/3.5 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
2004-04-21 19:27 ` [Bug c++/15054] " uweigand at gcc dot gnu dot org
2004-04-21 19:49 ` [Bug c++/15054] [3.3/3.4/3.5 Regression] " pinskia at gcc dot gnu dot org
@ 2004-04-21 20:51 ` pinskia at gcc dot gnu dot org
2004-04-22 14:44 ` uweigand at gcc dot gnu dot org
` (13 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-04-21 20:51 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2004-04-21 20:30 -------
Note it is opimized down to the abort.
(insn 29 28 30 (parallel [
(set (reg/v/f:SI 71 [ this ])
(plus:SI (reg/f:SI 54 virtual-stack-vars)
(const_int -32 [0xffffffe0])))
(clobber (reg:CC 17 flags))
]) -1 (nil)
(nil))
(insn 34 33 35 (set (mem/s/j:SI (reg/v/f:SI 71 [ this ]) [0 <variable>.canary+0 S4 A32])
(const_int 123 [0x7b])) -1 (nil)
(nil))
(insn 41 40 42 (parallel [
(set (reg/v/f:SI 70 [ x ])
(plus:SI (reg/f:SI 54 virtual-stack-vars)
(const_int -32 [0xffffffe0])))
(clobber (reg:CC 17 flags))
]) -1 (nil)
(nil))
(insn 51 50 52 (parallel [
(set (reg/v/f:SI 72 [ this ])
(plus:SI (reg/f:SI 54 virtual-stack-vars)
(const_int -16 [0xfffffff0])))
(clobber (reg:CC 17 flags))
]) -1 (nil)
(nil))
(insn 52 51 53 (set (mem/i:SI (reg/f:SI 56 virtual-outgoing-args) [0 S4 A32])
(const_int 4 [0x4])) -1 (nil)
(nil))
--
What |Removed |Added
----------------------------------------------------------------------------
Component|c++ |middle-end
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.3/3.4/3.5 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (2 preceding siblings ...)
2004-04-21 20:51 ` [Bug middle-end/15054] " pinskia at gcc dot gnu dot org
@ 2004-04-22 14:44 ` uweigand at gcc dot gnu dot org
2004-04-22 15:41 ` pinskia at gcc dot gnu dot org
` (12 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: uweigand at gcc dot gnu dot org @ 2004-04-22 14:44 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From uweigand at gcc dot gnu dot org 2004-04-22 13:46 -------
Why did you change the component to 'middle-end'? The bug is already present
on the RTL level right after expand (this is on i386):
(insn 144 142 145 (parallel[
(set (reg/v/f:SI 74)
(plus:SI (reg/f:SI 54 virtual-stack-vars)
(const_int -32 [0xffffffe0])))
(clobber (reg:CC 17 flags))
] ) -1 (nil)
(nil))
(insn 156 153 158 (parallel[
(set (reg/v/f:SI 75)
(plus:SI (reg/f:SI 54 virtual-stack-vars)
(const_int -32 [0xffffffe0])))
(clobber (reg:CC 17 flags))
] ) -1 (nil)
(nil))
(insn 158 156 159 (set (reg/v/f:SI 76)
(const_int 0 [0x0])) -1 (nil)
(nil))
(insn 164 162 165 (set (mem/s/j:SI (reg/v/f:SI 75) [0 <variable>.ptr+0 S4 A32])
(reg/v/f:SI 76)) -1 (nil)
(nil))
(insn 169 167 170 (set (reg:CCZ 17 flags)
(compare:CCZ (mem/s/j:SI (reg/v/f:SI 74) [0 <variable>.canary+0 S4 A32])
(const_int 123 [0x7b]))) -1 (nil)
(nil))
See how <variable>.ptr and <variable>.canary share the same stack slot?
That this is subsequently optimized away is only the logical conclusion,
and not a middle-end bug. The bug is the overlapping stack slot assignment.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.3/3.4/3.5 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (3 preceding siblings ...)
2004-04-22 14:44 ` uweigand at gcc dot gnu dot org
@ 2004-04-22 15:41 ` pinskia at gcc dot gnu dot org
2004-04-29 20:04 ` uweigand at gcc dot gnu dot org
` (11 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-04-22 15:41 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2004-04-22 14:51 -------
Because middle-end is where the conversion between trees to RTL happens.
"GCC's middle end; folks, expand_*, etc. Target dependent parts and optimization passes have their
own component" See how expand is part of it.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.3/3.4/3.5 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (4 preceding siblings ...)
2004-04-22 15:41 ` pinskia at gcc dot gnu dot org
@ 2004-04-29 20:04 ` uweigand at gcc dot gnu dot org
2004-04-30 17:47 ` pinskia at gcc dot gnu dot org
` (10 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: uweigand at gcc dot gnu dot org @ 2004-04-29 20:04 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From uweigand at gcc dot gnu dot org 2004-04-29 19:50 -------
See http://gcc.gnu.org/ml/gcc-patches/2004-04/msg01906.html for a potential fix (awaiting review).
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.3/3.4/3.5 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (5 preceding siblings ...)
2004-04-29 20:04 ` uweigand at gcc dot gnu dot org
@ 2004-04-30 17:47 ` pinskia at gcc dot gnu dot org
2004-05-01 11:37 ` cvs-commit at gcc dot gnu dot org
` (9 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-04-30 17:47 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2004-04-30 17:06 -------
Note this is fixed on the tree-ssa as it is optimized before getting to the expand.
--
What |Removed |Added
----------------------------------------------------------------------------
Known to work|3.0.4 |3.0.4 tree-ssa
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.3/3.4/3.5 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (6 preceding siblings ...)
2004-04-30 17:47 ` pinskia at gcc dot gnu dot org
@ 2004-05-01 11:37 ` cvs-commit at gcc dot gnu dot org
2004-05-01 12:23 ` [Bug middle-end/15054] [3.3/3.4 " pinskia at gcc dot gnu dot org
` (8 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-05-01 11:37 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2004-05-01 11:37 -------
Subject: Bug 15054
CVSROOT: /cvs/gcc
Module name: gcc
Changes by: uweigand@gcc.gnu.org 2004-05-01 11:37:39
Modified files:
gcc : ChangeLog expr.c function.c
gcc/testsuite : ChangeLog
Added files:
gcc/testsuite/g++.dg/opt: pr15054.C
Log message:
PR middle-end/15054
* expr.c (expand_expr_real): Do not call preserve_temp_slots
on a TARGET_EXPR temp.
* function.c (assign_stack_temp_for_type): Set 'keep' flag for
TARGET_EXPR temp slots.
PR middle-end/15054
* g++.dg/opt/pr15054.C: New test.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&r1=2.3539&r2=2.3540
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/expr.c.diff?cvsroot=gcc&r1=1.641&r2=1.642
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/function.c.diff?cvsroot=gcc&r1=1.513&r2=1.514
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&r1=1.3713&r2=1.3714
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/opt/pr15054.C.diff?cvsroot=gcc&r1=NONE&r2=1.1
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.3/3.4 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (7 preceding siblings ...)
2004-05-01 11:37 ` cvs-commit at gcc dot gnu dot org
@ 2004-05-01 12:23 ` pinskia at gcc dot gnu dot org
2004-05-05 12:44 ` cvs-commit at gcc dot gnu dot org
` (7 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-05-01 12:23 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2004-05-01 12:23 -------
Fixed on the mainline so far.
--
What |Removed |Added
----------------------------------------------------------------------------
Known to fail|3.3.3 3.2.3 3.4.0 3.5.0 |3.3.3 3.2.3 3.4.0
Known to work|3.0.4 tree-ssa |3.0.4 tree-ssa 3.5.0
Summary|[3.3/3.4/3.5 Regression] Bad|[3.3/3.4 Regression] Bad
|code due to overlapping |code due to overlapping
|stack temporaries |stack temporaries
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.3/3.4 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (8 preceding siblings ...)
2004-05-01 12:23 ` [Bug middle-end/15054] [3.3/3.4 " pinskia at gcc dot gnu dot org
@ 2004-05-05 12:44 ` cvs-commit at gcc dot gnu dot org
2004-05-17 6:52 ` cvs-commit at gcc dot gnu dot org
` (6 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-05-05 12:44 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2004-05-05 12:44 -------
Subject: Bug 15054
CVSROOT: /cvs/gcc
Module name: gcc
Branch: hammer-3_3-branch
Changes by: matz@gcc.gnu.org 2004-05-05 12:44:10
Added files:
gcc/testsuite/g++.dg/opt: pr15054.C
Log message:
Backport from mainline
2004-05-01 Ulrich Weigand <uweigand@de.ibm.com>
PR middle-end/15054
* expr.c (expand_expr_real): Do not call preserve_temp_slots
on a TARGET_EXPR temp.
* function.c (assign_stack_temp_for_type): Set 'keep' flag for
TARGET_EXPR temp slots.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/opt/pr15054.C.diff?cvsroot=gcc&only_with_tag=hammer-3_3-branch&r1=NONE&r2=1.1.2.1
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.3/3.4 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (9 preceding siblings ...)
2004-05-05 12:44 ` cvs-commit at gcc dot gnu dot org
@ 2004-05-17 6:52 ` cvs-commit at gcc dot gnu dot org
2004-05-17 6:54 ` [Bug middle-end/15054] [3.4 " gdr at gcc dot gnu dot org
` (5 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-05-17 6:52 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2004-05-16 20:27 -------
Subject: Bug 15054
CVSROOT: /cvs/gcc
Module name: gcc
Branch: gcc-3_3-branch
Changes by: gdr@gcc.gnu.org 2004-05-16 20:27:22
Modified files:
gcc : ChangeLog expr.c function.c
Added files:
gcc/testsuite/g++.dg/opt: pr15054.C
Log message:
Backport from mainline
2004-05-01 Ulrich Weigand <uweigand@de.ibm.com>
PR middle-end/15054
* expr.c (expand_expr_real): Do not call preserve_temp_slots
on a TARGET_EXPR temp.
* function.c (assign_stack_temp_for_type): Set 'keep' flag for
TARGET_EXPR temp slots.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.16114.2.979&r2=1.16114.2.980
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/expr.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.498.2.30&r2=1.498.2.31
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/function.c.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=1.389.2.15&r2=1.389.2.16
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/opt/pr15054.C.diff?cvsroot=gcc&only_with_tag=gcc-3_3-branch&r1=NONE&r2=1.1.8.1
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.4 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (10 preceding siblings ...)
2004-05-17 6:52 ` cvs-commit at gcc dot gnu dot org
@ 2004-05-17 6:54 ` gdr at gcc dot gnu dot org
2004-05-18 3:50 ` gdr at integrable-solutions dot net
` (4 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: gdr at gcc dot gnu dot org @ 2004-05-17 6:54 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From gdr at gcc dot gnu dot org 2004-05-16 20:30 -------
Fixed for 3.3.4. Now only 3.4.x regression.
(I've just been bitten by this bug in my own code :-()
--
What |Removed |Added
----------------------------------------------------------------------------
Summary|[3.3/3.4 Regression] Bad |[3.4 Regression] Bad code
|code due to overlapping |due to overlapping stack
|stack temporaries |temporaries
Target Milestone|3.3.4 |3.4.1
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.4 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (11 preceding siblings ...)
2004-05-17 6:54 ` [Bug middle-end/15054] [3.4 " gdr at gcc dot gnu dot org
@ 2004-05-18 3:50 ` gdr at integrable-solutions dot net
2004-05-18 3:57 ` bangerth at dealii dot org
` (3 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: gdr at integrable-solutions dot net @ 2004-05-18 3:50 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From gdr at integrable-solutions dot net 2004-05-17 15:03 -------
Subject: Re: [3.4 Regression] Bad code due to overlapping stack temporaries
Ulrich Weigand <Ulrich.Weigand@de.ibm.com> writes:
| Hello Gaby,
|
| sorry for not committing this earlier; I was waiting for Mark's approval to
| apply to both branches simultaneously ...
Hey Ulrich,
There is no need to sorry! I came to appreciate the patch when my
own code got screwed :-)
-- Gaby
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.4 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (12 preceding siblings ...)
2004-05-18 3:50 ` gdr at integrable-solutions dot net
@ 2004-05-18 3:57 ` bangerth at dealii dot org
2004-05-18 19:43 ` mmitchel at gcc dot gnu dot org
` (2 subsequent siblings)
16 siblings, 0 replies; 18+ messages in thread
From: bangerth at dealii dot org @ 2004-05-18 3:57 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From bangerth at dealii dot org 2004-05-17 15:40 -------
Mark, what is your word on this for 3.4.1?
W.
--
What |Removed |Added
----------------------------------------------------------------------------
CC| |mmitchel at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.4 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (13 preceding siblings ...)
2004-05-18 3:57 ` bangerth at dealii dot org
@ 2004-05-18 19:43 ` mmitchel at gcc dot gnu dot org
2004-05-18 21:48 ` cvs-commit at gcc dot gnu dot org
2004-05-18 23:03 ` pinskia at gcc dot gnu dot org
16 siblings, 0 replies; 18+ messages in thread
From: mmitchel at gcc dot gnu dot org @ 2004-05-18 19:43 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From mmitchel at gcc dot gnu dot org 2004-05-18 07:35 -------
This patch is OK for 3.4.1. Thanks!
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.4 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (14 preceding siblings ...)
2004-05-18 19:43 ` mmitchel at gcc dot gnu dot org
@ 2004-05-18 21:48 ` cvs-commit at gcc dot gnu dot org
2004-05-18 23:03 ` pinskia at gcc dot gnu dot org
16 siblings, 0 replies; 18+ messages in thread
From: cvs-commit at gcc dot gnu dot org @ 2004-05-18 21:48 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2004-05-18 11:08 -------
Subject: Bug 15054
CVSROOT: /cvs/gcc
Module name: gcc
Branch: gcc-3_4-branch
Changes by: uweigand@gcc.gnu.org 2004-05-18 11:08:22
Modified files:
gcc : ChangeLog expr.c function.c
gcc/testsuite : ChangeLog
Added files:
gcc/testsuite/g++.dg/opt: pr15054.C
Log message:
ChangeLog:
PR middle-end/15054
* expr.c (expand_expr_real): Do not call preserve_temp_slots
on a TARGET_EXPR temp.
* function.c (assign_stack_temp_for_type): Set 'keep' flag for
TARGET_EXPR temp slots.
testsuite/ChangeLog:
PR middle-end/15054
* g++.dg/opt/pr15054.C: New test.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=2.2326.2.444&r2=2.2326.2.445
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/expr.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.615.4.12&r2=1.615.4.13
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/function.c.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.483.4.12&r2=1.483.4.13
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.3389.2.175&r2=1.3389.2.176
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/gcc/testsuite/g++.dg/opt/pr15054.C.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=NONE&r2=1.1.12.1
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
* [Bug middle-end/15054] [3.4 Regression] Bad code due to overlapping stack temporaries
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
` (15 preceding siblings ...)
2004-05-18 21:48 ` cvs-commit at gcc dot gnu dot org
@ 2004-05-18 23:03 ` pinskia at gcc dot gnu dot org
16 siblings, 0 replies; 18+ messages in thread
From: pinskia at gcc dot gnu dot org @ 2004-05-18 23:03 UTC (permalink / raw)
To: gcc-bugs
------- Additional Comments From pinskia at gcc dot gnu dot org 2004-05-18 11:49 -------
Fixed.
--
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15054
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2004-05-18 11:49 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-04-21 19:25 [Bug c++/15054] New: Bad code due to overlapping stack temporaries uweigand at gcc dot gnu dot org
2004-04-21 19:27 ` [Bug c++/15054] " uweigand at gcc dot gnu dot org
2004-04-21 19:49 ` [Bug c++/15054] [3.3/3.4/3.5 Regression] " pinskia at gcc dot gnu dot org
2004-04-21 20:51 ` [Bug middle-end/15054] " pinskia at gcc dot gnu dot org
2004-04-22 14:44 ` uweigand at gcc dot gnu dot org
2004-04-22 15:41 ` pinskia at gcc dot gnu dot org
2004-04-29 20:04 ` uweigand at gcc dot gnu dot org
2004-04-30 17:47 ` pinskia at gcc dot gnu dot org
2004-05-01 11:37 ` cvs-commit at gcc dot gnu dot org
2004-05-01 12:23 ` [Bug middle-end/15054] [3.3/3.4 " pinskia at gcc dot gnu dot org
2004-05-05 12:44 ` cvs-commit at gcc dot gnu dot org
2004-05-17 6:52 ` cvs-commit at gcc dot gnu dot org
2004-05-17 6:54 ` [Bug middle-end/15054] [3.4 " gdr at gcc dot gnu dot org
2004-05-18 3:50 ` gdr at integrable-solutions dot net
2004-05-18 3:57 ` bangerth at dealii dot org
2004-05-18 19:43 ` mmitchel at gcc dot gnu dot org
2004-05-18 21:48 ` cvs-commit at gcc dot gnu dot org
2004-05-18 23:03 ` 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).