aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2013-09-13 15:11:23 -0400
committerJason Merrill <jason@gcc.gnu.org>2013-09-13 15:11:23 -0400
commit2fce28ed64e0db40509499e1992953859a9e57f8 (patch)
tree0fb834cefc477300f9080d1e7e5a5f82c0f439a2 /gcc
parent4f03875418e8d9df12f819a0baeaece1cc7c13e7 (diff)
downloadgcc-2fce28ed64e0db40509499e1992953859a9e57f8.zip
gcc-2fce28ed64e0db40509499e1992953859a9e57f8.tar.gz
gcc-2fce28ed64e0db40509499e1992953859a9e57f8.tar.bz2
re PR c++/58273 (Segmentation fault with C++11)
PR c++/58273 * pt.c (any_type_dependent_elements_p): Actually check for type-dependence, not value-dependence. From-SVN: r202576
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c2
-rw-r--r--gcc/testsuite/g++.dg/template/inherit9.C15
3 files changed, 22 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a574f2a..61e681a 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2013-09-13 Jason Merrill <jason@redhat.com>
+
+ PR c++/58273
+ * pt.c (any_type_dependent_elements_p): Actually check for
+ type-dependence, not value-dependence.
+
2013-09-13 Jacek Caban <jacek@codeweavers.com>
* decl.c: Use new cxx_implicit_extern_c hook
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 3ae679a..d560e3c 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -20456,7 +20456,7 @@ bool
any_type_dependent_elements_p (const_tree list)
{
for (; list; list = TREE_CHAIN (list))
- if (value_dependent_expression_p (TREE_VALUE (list)))
+ if (type_dependent_expression_p (TREE_VALUE (list)))
return true;
return false;
diff --git a/gcc/testsuite/g++.dg/template/inherit9.C b/gcc/testsuite/g++.dg/template/inherit9.C
new file mode 100644
index 0000000..926343b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/inherit9.C
@@ -0,0 +1,15 @@
+// PR c++/58273
+
+class A {};
+class B
+{
+ int goo(A);
+};
+template<typename E>
+class D : public B
+{
+ void foo(A t)
+ {
+ int const i(B::goo(t));
+ }
+};