]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/90173 (ICE: Segmentation fault (in strip_declarator_types))
authorPaolo Carlini <paolo.carlini@oracle.com>
Mon, 6 May 2019 15:23:37 +0000 (15:23 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Mon, 6 May 2019 15:23:37 +0000 (15:23 +0000)
/cp
2019-05-06  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/90173
* decl.c (grokdeclarator): Set type to error_mark_node
upon error about template placeholder type non followed
by a simple declarator-id.

/testsuite
2019-05-06  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/90173
* g++.dg/cpp1z/class-deduction66.C: New.

From-SVN: r270915

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp1z/class-deduction66.C [new file with mode: 0644]

index 8d6ee383f5a9e3bce87d36c3ed5048316b2a2ae4..d152763be493baa5aa57c12cc5aabea655101713 100644 (file)
@@ -1,3 +1,10 @@
+2019-05-06  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/90173
+       * decl.c (grokdeclarator): Set type to error_mark_node
+       upon error about template placeholder type non followed
+       by a simple declarator-id.
+
 2019-05-04  Michael Meissner  <meissner@linux.ibm.com>
 
        * ChangeLog.ibm: Delete unintentional commit on the wrong branch.
index 01c89cd572d12f9afacc83986568da116e1cbcca..b57ded813b6895909d32dbd3977f6f53f2a4d457 100644 (file)
@@ -10973,6 +10973,7 @@ grokdeclarator (const cp_declarator *declarator,
       error_at (typespec_loc, "template placeholder type %qT must be followed "
                "by a simple declarator-id", type);
       inform (DECL_SOURCE_LOCATION (tmpl), "%qD declared here", tmpl);
+      type = error_mark_node;
     }
 
   staticp = 0;
index 08fc24eeadce59d4e91f00143aef981ebc592825..3fb178d1d98d4427aa5dcdf236fa70d9b0075bb4 100644 (file)
@@ -1,3 +1,8 @@
+2019-05-06  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/90173
+       * g++.dg/cpp1z/class-deduction66.C: New.
+
 2019-05-06  Martin Liska  <mliska@suse.cz>
 
        Backport from mainline
diff --git a/gcc/testsuite/g++.dg/cpp1z/class-deduction66.C b/gcc/testsuite/g++.dg/cpp1z/class-deduction66.C
new file mode 100644 (file)
index 0000000..3a5d8aa
--- /dev/null
@@ -0,0 +1,10 @@
+// PR c++/90173
+// { dg-do compile { target c++17 } }
+
+template <typename T> struct A { };
+
+A(int) -> A<int>;
+
+namespace decl {
+  A (*fp)() = 0;  // { dg-error "placeholder" }
+}