A conditional expression between DFP and non-DFP floating-point
produces an ICE. This patch fixes this by making
build_conditional_expr return early when c_common_type produces an
error.
Bootstrapped with no regressions on x86_64-pc-linux-gnu.
PR c/71601
gcc/c:
* c-typeck.c (build_conditional_expr): Return error_mark_node if
c_common_type returns error_mark_node.
gcc/testsuite:
* gcc.dg/dfp/usual-arith-conv-bad-3.c: New test.
From-SVN: r237622
+2016-06-20 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/71601
+ * c-typeck.c (build_conditional_expr): Return error_mark_node if
+ c_common_type returns error_mark_node.
+
2016-06-19 Martin Sebor <msebor@redhat.com>
PR c/69507
|| code2 == COMPLEX_TYPE))
{
result_type = c_common_type (type1, type2);
+ if (result_type == error_mark_node)
+ return error_mark_node;
do_warn_double_promotion (result_type, type1, type2,
"implicit conversion from %qT to %qT to "
"match other result of conditional",
+2016-06-20 Joseph Myers <joseph@codesourcery.com>
+
+ PR c/71601
+ * gcc.dg/dfp/usual-arith-conv-bad-3.c: New test.
+
2016-06-20 Jakub Jelinek <jakub@redhat.com>
PR middle-end/71581
--- /dev/null
+/* Test error for conditional expression between DFP and other
+ floating operand. */
+/* { dg-do compile } */
+
+_Decimal32 a;
+float b;
+int i;
+
+void
+f (void)
+{
+ (void) (i ? a : b); /* { dg-error "mix operands" } */
+}