Bug 95954 - ICE: unexpected expression ‘(a)’ of kind paren_expr
Summary: ICE: unexpected expression ‘(a)’ of kind paren_expr
Status: NEW
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: 11.0
: P5 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: error-recovery, ice-on-invalid-code
Depends on:
Blocks:
 
Reported: 2020-06-29 02:54 UTC by Haoxin Tu
Modified: 2021-08-08 09:19 UTC (History)
2 users (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2020-07-08 00:00:00


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Haoxin Tu 2020-06-29 02:54:13 UTC
This code, bug.cc, reduced by C-Reduce, makes GCC-trunk ICE.

$cat bug.cc
short a;
thread_local b ( auto , = ( a ;

$g++ -w bug.cc
bug.cc:2:25: error: expected identifier before ‘=’ token
    2 | thread_local b ( auto , = ( a ;
      |                         ^
bug.cc:2:30: error: expected ‘)’ before ‘;’ token
    2 | thread_local b ( auto , = ( a ;
      |                           ~  ^~
      |                              )
bug.cc:2:30: error: expected ‘)’ before ‘;’ token
    2 | thread_local b ( auto , = ( a ;
      |                ~             ^~
      |                              )
bug.cc:2:14: error: ISO C++ forbids declaration of ‘b’ with no type []8;;https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-fpermissive-fpermissive]8;;]
    2 | thread_local b ( auto , = ( a ;
      |              ^
bug.cc:2:31: internal compiler error: unexpected expression ‘(a)’ of kind paren_expr
    2 | thread_local b ( auto , = ( a ;
      |                               ^
0x8b06d4 cxx_eval_constant_expression
	../../gcc/cp/constexpr.c:6503
0x8b0c1f cxx_eval_outermost_constant_expr
	../../gcc/cp/constexpr.c:6708
0x8b500b maybe_constant_value(tree_node*, tree_node*, bool)
	../../gcc/cp/constexpr.c:6981
0x8ddc74 cp_fully_fold(tree_node*)
	../../gcc/cp/cp-gimplify.c:2464
0x8e51cf cp_convert_and_check(tree_node*, tree_node*, int)
	../../gcc/cp/cvt.c:661
0x8724df convert_like_real
	../../gcc/cp/call.c:7865
0x873c29 perform_implicit_conversion_flags(tree_node*, tree_node*, int, int)
	../../gcc/cp/call.c:11870
0x8f887f check_default_argument(tree_node*, tree_node*, int)
	../../gcc/cp/decl.c:13923
0x8f8edf grokparms(tree_node*, tree_node**)
	../../gcc/cp/decl.c:14111
0x90a23b grokdeclarator(cp_declarator const*, cp_decl_specifier_seq*, decl_context, int, tree_node**)
	../../gcc/cp/decl.c:12393
0x915628 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int, tree_node*, tree_node*, tree_node**)
	../../gcc/cp/decl.c:5233
0x9c1e6d cp_parser_init_declarator
	../../gcc/cp/parser.c:20818
0x9a36d2 cp_parser_simple_declaration
	../../gcc/cp/parser.c:13785
0x9cc926 cp_parser_declaration
	../../gcc/cp/parser.c:13484
0x9cd06a cp_parser_translation_unit
	../../gcc/cp/parser.c:4761
0x9cd06a c_parse_file()
	../../gcc/cp/parser.c:44043
0xae4dbb c_common_parse_file()
	../../gcc/c-family/c-opts.c:1190
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

$g++ --version
g++ (GCC) 11.0.0 20200626 (experimental)
Copyright (C) 2020 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.