aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2010-05-04 14:17:52 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2010-05-04 14:17:52 +0000
commit4ac4b596988312f096f860d3e10579af438e3085 (patch)
treec13a2d8ae7baf9bfd1394f3b4141c40b16b1ba0c /gcc
parent0d3f65273b2de423cb9895d70cd646d19f650322 (diff)
downloadgcc-4ac4b596988312f096f860d3e10579af438e3085.zip
gcc-4ac4b596988312f096f860d3e10579af438e3085.tar.gz
gcc-4ac4b596988312f096f860d3e10579af438e3085.tar.bz2
re PR c++/43705 (ICE: SIGSEGV with template specialization in non-namespace scope)
/cp 2010-05-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/43705 * call.c (build_new_method_call): Return error_mark_node if fns is NULL_TREE. /testsuite 2010-05-04 Paolo Carlini <paolo.carlini@oracle.com> PR c++/43705 * g++.dg/template/crash95.C: New. From-SVN: r159029
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/call.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/crash95.C11
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 026abe8..634a74b 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2010-05-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/43705
+ * call.c (build_new_method_call): Return error_mark_node if fns is
+ NULL_TREE.
+
2010-05-03 Dodji Seketeli <dodji@redhat.com>
PR c++/43953
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 7915417..157b473 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -6219,7 +6219,7 @@ build_new_method_call (tree instance, tree fns, VEC(tree,gc) **args,
*fn_p = NULL_TREE;
if (error_operand_p (instance)
- || error_operand_p (fns))
+ || !fns || error_operand_p (fns))
return error_mark_node;
if (!BASELINK_P (fns))
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 29eaf71..d43de64 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2010-05-04 Paolo Carlini <paolo.carlini@oracle.com>
+
+ PR c++/43705
+ * g++.dg/template/crash95.C: New.
+
2010-05-04 H.J. Lu <hongjiu.lu@intel.com>
PR debug/43508
diff --git a/gcc/testsuite/g++.dg/template/crash95.C b/gcc/testsuite/g++.dg/template/crash95.C
new file mode 100644
index 0000000..959a9d0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/crash95.C
@@ -0,0 +1,11 @@
+// PR c++/43705
+
+template < typename > struct S
+{
+ template < > struct S < int > // { dg-error "explicit|specialization|template|parameter" }
+ {
+ S(int);
+ };
+};
+
+S < int > s(0);