From: Paolo Carlini Date: Mon, 3 Sep 2018 07:57:33 +0000 (+0000) Subject: re PR c++/84980 ([concepts] ICE with missing typename in concept) X-Git-Tag: upstream/12.2.0~29448 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d1dfeff07917739fd5ae157be0825a757c576bef;p=platform%2Fupstream%2Fgcc.git re PR c++/84980 ([concepts] ICE with missing typename in concept) /cp 2018-09-03 Paolo Carlini PR c++/84980 * constraint.cc (finish_shorthand_constraint): Early return if the constraint is erroneous. /testsuite 2018-09-03 Paolo Carlini PR c++/84980 * g++.dg/concepts/pr84980.C: New. From-SVN: r264051 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index cec14d5..55d8290 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2018-09-03 Paolo Carlini + + PR c++/84980 + * constraint.cc (finish_shorthand_constraint): Early return if the + constraint is erroneous. + 2018-09-02 Bernd Edlinger * decl.c (eval_check_narrowing): Remove. diff --git a/gcc/cp/constraint.cc b/gcc/cp/constraint.cc index 9f9fb52..7b32355 100644 --- a/gcc/cp/constraint.cc +++ b/gcc/cp/constraint.cc @@ -1259,6 +1259,9 @@ finish_shorthand_constraint (tree decl, tree constr) if (!constr) return NULL_TREE; + if (error_operand_p (constr)) + return NULL_TREE; + tree proto = CONSTRAINED_PARM_PROTOTYPE (constr); tree con = CONSTRAINED_PARM_CONCEPT (constr); tree args = CONSTRAINED_PARM_EXTRA_ARGS (constr); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e4eaeb7..b8c9e1a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-09-03 Paolo Carlini + + PR c++/84980 + * g++.dg/concepts/pr84980.C: New. + 2018-09-03 Martin Liska PR middle-end/59521 diff --git a/gcc/testsuite/g++.dg/concepts/pr84980.C b/gcc/testsuite/g++.dg/concepts/pr84980.C new file mode 100644 index 0000000..619c0bd --- /dev/null +++ b/gcc/testsuite/g++.dg/concepts/pr84980.C @@ -0,0 +1,6 @@ +// { dg-do compile { target c++14 } } +// { dg-additional-options "-fconcepts" } + +template concept bool C = true; // { dg-error "has not been declared" } + +template struct A;