Commit a959b33f by Paolo Carlini Committed by Paolo Carlini

re PR c++/63786 (crash on argument pack in switch case)

/cp
2014-11-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/63786
	* parser.c (cp_parser_label_for_labeled_statement): Check the case
	with check_for_bare_parameter_packs.

/testsuite
2014-11-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/63786
	* g++.dg/cpp0x/variadic163.C: New.

From-SVN: r218043
parent 43ba1c6c
2014-11-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/63786
* parser.c (cp_parser_label_for_labeled_statement): Check the case
with check_for_bare_parameter_packs.
2014-11-24 Jonathan Wakely <jwakely@redhat.com>
Paolo Carlini <paolo.carlini@oracle.com>
......
......@@ -9820,14 +9820,17 @@ cp_parser_label_for_labeled_statement (cp_parser* parser, tree attributes)
cp_lexer_consume_token (parser->lexer);
/* Parse the constant-expression. */
expr = cp_parser_constant_expression (parser);
if (check_for_bare_parameter_packs (expr))
expr = error_mark_node;
ellipsis = cp_lexer_peek_token (parser->lexer);
if (ellipsis->type == CPP_ELLIPSIS)
{
/* Consume the `...' token. */
cp_lexer_consume_token (parser->lexer);
expr_hi =
cp_parser_constant_expression (parser);
expr_hi = cp_parser_constant_expression (parser);
if (check_for_bare_parameter_packs (expr_hi))
expr_hi = error_mark_node;
/* We don't need to emit warnings here, as the common code
will do this for us. */
......
2014-11-25 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/63786
* g++.dg/cpp0x/variadic163.C: New.
2014-11-25 Ilya Enkovich <ilya.enkovich@intel.com>
PR target/64056
......
// PR c++/63786
// { dg-do compile { target c++11 } }
// { dg-options "" }
template <int... Is>
int f(int i) {
switch (i) {
case Is: // { dg-error "not expanded" }
return 0;
}
switch (i) {
case 0 ...Is: // { dg-error "not expanded" }
return 0;
}
return 0;
}
int main() {
f<1,2,3>(1);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment