https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71601
Bug ID: 71601 Summary: ICE on conditional expression between DFP / non-DFP float Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: jsm28 at gcc dot gnu.org Target Milestone: --- A conditional expression between DFP and non-DFP floating-point produces an ICE: _Decimal32 a; float b; int i; void f (void) { (void) (i ? a : b); } (on x86_64-pc-linux-gnu): t.c: In function 'f': t.c:7:3: error: can't mix operands of decimal float and other float types (void) (i ? a : b); ^ t.c:7:3: internal compiler error: tree check: expected class 'type', have 'exceptional' (error_mark) in get_qualified_type, at tree.c:6604 0xdbe161 tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) /scratch/jmyers/fsf/gcc-mainline/gcc/tree.c:9803 0xdd4161 tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) /scratch/jmyers/fsf/gcc-mainline/gcc/tree.h:3153 0xdd4161 get_qualified_type(tree_node*, int) /scratch/jmyers/fsf/gcc-mainline/gcc/tree.c:6604 0xddb0ed build_qualified_type(tree_node*, int) /scratch/jmyers/fsf/gcc-mainline/gcc/tree.c:6626 0x5ffe7a build_conditional_expr(unsigned int, tree_node*, bool, tree_node*, tree_node*, tree_node*, tree_node*) /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-typeck.c:5028 0x629514 c_parser_conditional_expression /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:6411 0x629970 c_parser_expr_no_commas /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:6268 0x62a0d2 c_parser_expression /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:8464 0x624942 c_parser_postfix_expression /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:7595 0x62760a c_parser_unary_expression /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:6939 0x6283b7 c_parser_cast_expression /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:6771 0x62845f c_parser_cast_expression /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:6760 0x6285d2 c_parser_binary_expression /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:6580 0x6292b5 c_parser_conditional_expression /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:6351 0x629970 c_parser_expr_no_commas /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:6268 0x62a0d2 c_parser_expression /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:8464 0x62ab19 c_parser_expression_conv /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:8497 0x64382c c_parser_statement_after_labels /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:5287 0x645968 c_parser_compound_statement_nostart /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:4861 0x645cde c_parser_compound_statement /scratch/jmyers/fsf/gcc-mainline/gcc/c/c-parser.c:4696 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions. I don't know if there was any version where this did not produce an ICE. Testing a patch.