diff options
author | Jason Merrill <jason@gcc.gnu.org> | 2002-07-05 11:16:56 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2002-07-05 11:16:56 -0400 |
commit | 7dc17098a2c31f04a702967845220d5b1e4a2336 (patch) | |
tree | 716cf7db649c843c0967c20a371c584e2c0ca472 | |
parent | 98c07d7bd78d311fc95985791421bfde08f40a0b (diff) | |
download | gcc-7dc17098a2c31f04a702967845220d5b1e4a2336.zip gcc-7dc17098a2c31f04a702967845220d5b1e4a2336.tar.gz gcc-7dc17098a2c31f04a702967845220d5b1e4a2336.tar.bz2 |
re PR rtl-optimization/7145 (g++ -O with structure initializer & return value optimization generates bad code)
PR optimization/7145
* tree.c (cp_copy_res_decl_for_inlining): Also copy DECL_INITIAL.
[[Split portion of a mixed commit.]]
From-SVN: r55262.2
-rw-r--r-- | gcc/testsuite/g++.dg/opt/nrv4.C | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/opt/nrv4.C b/gcc/testsuite/g++.dg/opt/nrv4.C new file mode 100644 index 0000000..531647d --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/nrv4.C @@ -0,0 +1,23 @@ +// PR optimization/7145 +// Bug: The NRV optimization caused us to lose the initializer for 'ret'. +// { dg-options -O } +// { dg-do run } + +struct GdkColor { + long pixel; + short red; + short green; + short blue; +}; + +inline GdkColor mkcolor() { + GdkColor ret={0,1,2,3}; + return ret; +} + +int +main() +{ + GdkColor col=mkcolor(); + return (col.pixel != 0 || col.red != 1 || col.green != 2 || col.blue != 3); +} |