https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94968
Bug ID: 94968 Summary: [10 Regression] internal compiler error: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in useless_type_conversion_p, at gimple-expr.c:87 Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: anbu1024.me at gmail dot com Target Milestone: --- $ cat test.c int foo() { __builtin_speculation_safe_value ( 1 , x ); } -------------------------------------------------------------------------------- $ gcc-10 --version gcc (GCC) 10.0.1 20200419 (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. -------------------------------------------------------------------------------- $ gcc-10 test.c test.c: In function ‘foo’: test.c:3:41: error: ‘x’ undeclared (first use in this function) 3 | __builtin_speculation_safe_value ( 1 , x ); | ^ test.c:3:41: note: each undeclared identifier is reported only once for each function it appears in test.c:3:2: internal compiler error: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in useless_type_conversion_p, at gimple-expr.c:87 3 | __builtin_speculation_safe_value ( 1 , x ); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 0x731f2f tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) ../../gcc-10-20200419/gcc/tree.c:9777 0x665cf0 tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) ../../gcc-10-20200419/gcc/tree.h:3410 0x665cf0 useless_type_conversion_p(tree_node*, tree_node*) ../../gcc-10-20200419/gcc/gimple-expr.c:87 0x8919e4 speculation_safe_value_resolve_params ../../gcc-10-20200419/gcc/c-family/c-common.c:6720 0x8919e4 resolve_overloaded_builtin(unsigned int, tree_node*, vec<tree_node*, va_gc, vl_embed>*) ../../gcc-10-20200419/gcc/c-family/c-common.c:7407 0x81a6c9 c_build_function_call_vec(unsigned int, vec<unsigned int, va_heap, vl_ptr>, tree_node*, vec<tree_node*, va_gc, vl_embed>*, vec<tree_node*, va_gc, vl_embed>*) ../../gcc-10-20200419/gcc/c/c-typeck.c:3199 0x838cde c_parser_postfix_expression_after_primary ../../gcc-10-20200419/gcc/c/c-parser.c:10501 0x8307a1 c_parser_postfix_expression ../../gcc-10-20200419/gcc/c/c-parser.c:10176 0x834ada c_parser_unary_expression ../../gcc-10-20200419/gcc/c/c-parser.c:8273 0x83632d c_parser_cast_expression ../../gcc-10-20200419/gcc/c/c-parser.c:8115 0x8365b9 c_parser_binary_expression ../../gcc-10-20200419/gcc/c/c-parser.c:7918 0x837595 c_parser_conditional_expression ../../gcc-10-20200419/gcc/c/c-parser.c:7652 0x837bb0 c_parser_expr_no_commas ../../gcc-10-20200419/gcc/c/c-parser.c:7569 0x837e11 c_parser_expression ../../gcc-10-20200419/gcc/c/c-parser.c:10637 0x8385b7 c_parser_expression_conv ../../gcc-10-20200419/gcc/c/c-parser.c:10670 0x82dd0b c_parser_statement_after_labels ../../gcc-10-20200419/gcc/c/c-parser.c:6301 0x82ff71 c_parser_compound_statement_nostart ../../gcc-10-20200419/gcc/c/c-parser.c:5805 0x84c8c4 c_parser_compound_statement ../../gcc-10-20200419/gcc/c/c-parser.c:5617 0x84e381 c_parser_declaration_or_fndef ../../gcc-10-20200419/gcc/c/c-parser.c:2505 0x8566e3 c_parser_external_declaration ../../gcc-10-20200419/gcc/c/c-parser.c:1745 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. -------------------------------------------------------------------------------- $ gcc-9 --version gcc (GCC) 9.3.1 20200425 Copyright (C) 2019 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. -------------------------------------------------------------------------------- $ gcc-9 test.c test.c: In function ‘foo’: test.c:3:41: error: ‘x’ undeclared (first use in this function) 3 | __builtin_speculation_safe_value ( 1 , x ); | ^ test.c:3:41: note: each undeclared identifier is reported only once for each function it appears in test.c:3:2: error: both arguments must be compatible 3 | __builtin_speculation_safe_value ( 1 , x ); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~