OSDN Git Service

gcc/
authorjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 May 2007 23:49:36 +0000 (23:49 +0000)
committerjanis <janis@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 May 2007 23:49:36 +0000 (23:49 +0000)
* c-typeck.c (build_binary_op): Return early for error.
gcc/testsuite/
* gcc.dg/dfp/usual-arith-conv-bad.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124732 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/dfp/usual-arith-conv-bad-2.c [new file with mode: 0644]

index 26d474d..0abf554 100644 (file)
@@ -1,3 +1,7 @@
+2007-05-14  Janis Johnson  <janis187@us.ibm.com>
+
+       * c-typeck.c (build_binary_op): Return early for error.
+
 2007-05-15  Zdenek Dvorak  <dvorakz@suse.cz>
 
        * tree-ssa-loop-niter.c (record_estimate): Use GGC_NEW to allocate
index fc42389..2bf7677 100644 (file)
@@ -8148,7 +8148,11 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
       int none_complex = (code0 != COMPLEX_TYPE && code1 != COMPLEX_TYPE);
 
       if (shorten || common || short_compare)
-       result_type = c_common_type (type0, type1);
+       {
+         result_type = c_common_type (type0, type1);
+         if (result_type == error_mark_node)
+           return error_mark_node;
+       }
 
       /* For certain operations (which identify themselves by shorten != 0)
         if both args were extended from the same smaller type,
index 159cee5..fd3c801 100644 (file)
@@ -1,6 +1,8 @@
 2007-05-14  Janis Johnson  <janis187@us.ibm.com>
 
-        * expr.c (cpp_classify_number): Warn about dfp constant for -pedantic.
+       * gcc.dg/dfp/usual-arith-conv-bad.c: New test.
+
+       * gcc.dg/fltconst-pedantic-dfp.c: New test.
 
        PR c/31924
        * gcc.dg/fltconst-1.c: New test.
diff --git a/gcc/testsuite/gcc.dg/dfp/usual-arith-conv-bad-2.c b/gcc/testsuite/gcc.dg/dfp/usual-arith-conv-bad-2.c
new file mode 100644 (file)
index 0000000..4693abc
--- /dev/null
@@ -0,0 +1,14 @@
+/* { dg-do compile } */
+/* { dg-options "-std=gnu99" } */
+
+/* This used to result in an ICE.  */
+
+extern _Decimal64 x;
+extern int i;
+
+void
+foo (void)
+{
+  if (x <= 2.0)                /* { dg-error "mix operands" } */
+    i++;
+}