summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/constexpr-null1.C11
4 files changed, 26 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 0d46bcca404..b2a958742d0 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/46670
+ * pt.c (value_dependent_expression_p) [ARRAY_REF]: Handle
+ properly.
+
2010-12-15 Nathan Froyd <froydnj@codesourcery.com>
PR c++/39859
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index a696d3bd8e3..49016b3542f 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -18108,6 +18108,10 @@ value_dependent_expression_p (tree expression)
return ((value_dependent_expression_p (TREE_OPERAND (expression, 0)))
|| (value_dependent_expression_p (TREE_OPERAND (expression, 2))));
+ case ARRAY_REF:
+ return ((value_dependent_expression_p (TREE_OPERAND (expression, 0)))
+ || (value_dependent_expression_p (TREE_OPERAND (expression, 1))));
+
case ADDR_EXPR:
{
tree op = TREE_OPERAND (expression, 0);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 209174b7240..fe5581e1138 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-17 Jason Merrill <jason@redhat.com>
+
+ PR c++/46670
+ * g++.dg/cpp0x/constexpr-null1.C: New.
+
2010-12-17 Bernd Schmidt <bernds@codesourcery.com>
* gcc.c-torture/compile/20101217-1.c: New test.
diff --git a/gcc/testsuite/g++.dg/constexpr-null1.C b/gcc/testsuite/g++.dg/constexpr-null1.C
new file mode 100644
index 00000000000..44cf9a0b9c6
--- /dev/null
+++ b/gcc/testsuite/g++.dg/constexpr-null1.C
@@ -0,0 +1,11 @@
+// PR c++/46670
+// { dg-options -std=c++0x }
+
+extern unsigned char __TBB_ReverseByte(unsigned char src);
+extern unsigned char *reversed;
+template<typename T> T __TBB_ReverseBits(T src)
+{
+ unsigned char *original = (unsigned char *) &src;
+ for( int i = sizeof(T)-1; i--; )
+ reversed[i] = __TBB_ReverseByte( original[sizeof(T)-i-1] );
+}