aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@gmail.com>2006-12-21 23:30:55 -0800
committerAndrew Pinski <pinskia@gcc.gnu.org>2006-12-21 23:30:55 -0800
commitb3c4918f98830ee60d9d6dcad83de6e9e2f9ef6d (patch)
tree22e853cec34834d64d11f49dfac6d0c59828bee2 /gcc
parentbc0ebe76b3d07e19aeafe057c480a52ad87aef9d (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cp/optimize.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/opt/complex6.C14
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;
+}