From 559e4bfa7a298959ff3bee9f33fc8d9f0113b9a8 Mon Sep 17 00:00:00 2001 From: spark Date: Tue, 20 Mar 2007 15:42:37 +0000 Subject: [PATCH] 2007-03-19 Seongbae Park PR tree-optimization/30590 * g++.dg/opt/pr30590.C: New testcase. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123087 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 ++++ gcc/testsuite/g++.dg/opt/pr30590.C | 40 ++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 gcc/testsuite/g++.dg/opt/pr30590.C diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0e772e49a86e..147dd302106b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-03-19 Seongbae Park + + PR tree-optimization/30590 + * g++.dg/opt/pr30590.C: New testcase. + 2007-03-20 Jakub Jelinek PR c/30762 diff --git a/gcc/testsuite/g++.dg/opt/pr30590.C b/gcc/testsuite/g++.dg/opt/pr30590.C new file mode 100644 index 000000000000..42ae046db813 --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/pr30590.C @@ -0,0 +1,40 @@ +/* { dg-do run } */ +/* { dg-options "-O" } */ +struct test +{ + int type; + char buffer[4242]; /* should trigger pass-by-reference */ +}; + +int flag = 0; + +struct test +reset (void) +{ + struct test retval; + retval.type = 1; + return retval; +} + +struct test +test (void) +{ + struct test result; + result.type = 0; + + for (int i = 0; i < 2; ++i) + { + struct test candidate = reset (); + if (flag) + result = candidate; + } + + return result; +} + +int +main (void) +{ + struct test result = test (); + return result.type; +} -- 2.47.2