aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@gcc.gnu.org>2002-04-09 13:02:43 -0400
committerJason Merrill <jason@gcc.gnu.org>2002-04-09 13:02:43 -0400
commit02f136ee0d7c29cb8721a30107d7b6ef7f5279c0 (patch)
tree071c0375be4586f849ed9967c6baf83561577c17 /gcc
parentedf5cd1d1d776d7eb0d2d423216a38d4cac21103 (diff)
downloadgcc-02f136ee0d7c29cb8721a30107d7b6ef7f5279c0.zip
gcc-02f136ee0d7c29cb8721a30107d7b6ef7f5279c0.tar.gz
gcc-02f136ee0d7c29cb8721a30107d7b6ef7f5279c0.tar.bz2
re PR rtl-optimization/6189 (Regression from 3.0.x: g++ -O3 generates wrong code)
PR optimization/6189 * semantics.c (genrtl_start_function): Don't free DECL_SAVED_FUNCTION_DATA for inline functions. [[Split portion of a mixed commit.]] From-SVN: r52083.2
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/g++.dg/opt/nrv3.C24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/opt/nrv3.C b/gcc/testsuite/g++.dg/opt/nrv3.C
new file mode 100644
index 0000000..2ec5977
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/nrv3.C
@@ -0,0 +1,24 @@
+// PR optimization/6189
+// Bug: we forgot about foo's nrv after writing it out.
+// { dg-options -O3 }
+// { dg-do run }
+
+struct A
+{
+ int i;
+};
+
+
+A foo ()
+{
+ A a;
+ a.i = 42;
+ return a;
+}
+
+
+int main()
+{
+ A b = foo();
+ return b.i != 42;
+}