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 );
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~