summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsimartin <simartin@138bc75d-0d04-0410-961f-82ee72b054a4>2007-04-17 18:05:53 +0000
committersimartin <simartin@138bc75d-0d04-0410-961f-82ee72b054a4>2007-04-17 18:05:53 +0000
commit18bf4e9a1edab98a50189d003820ff61a479ecad (patch)
treeb91c0bec7d5fbfcd24aa2baf2e8cda6541b0a31b
parent2c2034a30a4141a7a893d9b96cd52dcaa8d366f1 (diff)
downloadppe42-gcc-18bf4e9a1edab98a50189d003820ff61a479ecad.tar.gz
ppe42-gcc-18bf4e9a1edab98a50189d003820ff61a479ecad.zip
2007-04-17 Simon Martin <simartin@users.sourceforge.net>
PR c++/31517 * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@123923 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/pt.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/init7.C9
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index f23256ade89..1b7172f4424 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-17 Simon Martin <simartin@users.sourceforge.net>
+
+ PR c++/31517
+ * pt.c (value_dependent_expression_p): Handle MODOP_EXPRs.
+
2007-04-16 Seongbae Park <seongbae.park@gmail.com>
PR c++/29365
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 906b8d5b1a9..05d7752b3df 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -14949,6 +14949,10 @@ value_dependent_expression_p (tree expression)
|| (type2 ? dependent_type_p (type2) : false));
}
+ case MODOP_EXPR:
+ return ((value_dependent_expression_p (TREE_OPERAND (expression, 0)))
+ || (value_dependent_expression_p (TREE_OPERAND (expression, 2))));
+
default:
/* A constant expression is value-dependent if any subexpression is
value-dependent. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 36592abfa08..bb25db03d27 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-17 Simon Martin <simartin@users.sourceforge.net>
+
+ PR c++/31517
+ * g++.dg/template/init7.C: New test.
+
2007-04-17 Zdenek Dvorak <dvorakz@suse.cz>
PR rtl-optimization/31360
diff --git a/gcc/testsuite/g++.dg/template/init7.C b/gcc/testsuite/g++.dg/template/init7.C
new file mode 100644
index 00000000000..e2267767b89
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/init7.C
@@ -0,0 +1,9 @@
+/* PR c++/31517. This used to ICE. */
+/* { dg-do "compile" } */
+
+template<typename> struct A
+{
+ static const int i=0;
+};
+
+template<typename T> const int A<T>::i = 0=0; /* { dg-error "duplicate initialization" } */
OpenPOWER on IntegriCloud