diff options
author | Andrew Pinski <pinskia@gmail.com> | 2006-12-21 23:30:55 -0800 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2006-12-21 23:30:55 -0800 |
commit | b3c4918f98830ee60d9d6dcad83de6e9e2f9ef6d (patch) | |
tree | 22e853cec34834d64d11f49dfac6d0c59828bee2 /gcc | |
parent | bc0ebe76b3d07e19aeafe057c480a52ad87aef9d (diff) | |
download | gcc-b3c4918f98830ee60d9d6dcad83de6e9e2f9ef6d.zip gcc-b3c4918f98830ee60d9d6dcad83de6e9e2f9ef6d.tar.gz gcc-b3c4918f98830ee60d9d6dcad83de6e9e2f9ef6d.tar.bz2 |
re PR c++/30168 (C++ constructors can cause invalid gimple to happen with complex typed variables)
2006-12-21 Andrew Pinski <pinskia@gmail.com>
PR C++/30168
* optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.
2006-12-21 Andrew Pinski <pinskia@gmail.com>
PR C++/30168
* g++.dg/opt/complex6.C: New test.
From-SVN: r120144
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/optimize.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/opt/complex6.C | 14 |
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 083b925..caad0ec 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2006-12-21 Andrew Pinski <pinskia@gmail.com> + + PR C++/30168 + * optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also. + 2006-12-22 Kazu Hirata <kazu@codesourcery.com> * decl.c: Fix a coment typo. diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c index 7ac2437..839c4e6 100644 --- a/gcc/cp/optimize.c +++ b/gcc/cp/optimize.c @@ -69,6 +69,8 @@ update_cloned_parm (tree parm, tree cloned_parm, bool first) DECL_NAME (cloned_parm) = DECL_NAME (parm); DECL_SOURCE_LOCATION (cloned_parm) = DECL_SOURCE_LOCATION (parm); TREE_TYPE (cloned_parm) = TREE_TYPE (parm); + + DECL_GIMPLE_REG_P (cloned_parm) = DECL_GIMPLE_REG_P (parm); } /* FN is a function that has a complete body. Clone the body as diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 206b391..f49fa37 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-12-21 Andrew Pinski <pinskia@gmail.com> + + PR C++/30168 + * g++.dg/opt/complex6.C: New test. + 2006-12-22 Ben Elliston <bje@au.ibm.com> * lib/gcc-dg.exp (gcc-dg-prune): Return "::unsupported::memory diff --git a/gcc/testsuite/g++.dg/opt/complex6.C b/gcc/testsuite/g++.dg/opt/complex6.C new file mode 100644 index 0000000..bedb3ed --- /dev/null +++ b/gcc/testsuite/g++.dg/opt/complex6.C @@ -0,0 +1,14 @@ +// PR 30168 +// { dg-do compile } +// { dg-options "-O2" } + +struct aaa +{ + aaa(_Complex float __z) ; + _Complex float _M_value; +}; +aaa::aaa(_Complex float __z) +{ + __z*=2.0f; + _M_value = __z; +} |