OSDN Git Service

2008-12-30 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 30 Dec 2008 10:28:01 +0000 (10:28 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 30 Dec 2008 10:28:01 +0000 (10:28 +0000)
PR middle-end/38564
* fold-const.c (fold_comparison): Use the correct result type.

* gcc.c-torture/compile/pr38564.c: New testcase.

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

gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/compile/pr38564.c [new file with mode: 0644]

index 603b68d..1772b60 100644 (file)
@@ -1,3 +1,8 @@
+2008-12-30  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/38564
+       * fold-const.c (fold_comparison): Use the correct result type.
+
 2008-12-30  Dorit Nuzman  <dorit@il.ibm.com>
             Ira Rosen  <irar@il.ibm.com>
 
index 74a0a87..be542b7 100644 (file)
@@ -9036,17 +9036,17 @@ fold_comparison (enum tree_code code, tree type, tree op0, tree op1)
              switch (code)
                {
                case EQ_EXPR:
-                 return build_int_cst (boolean_type_node, bitpos0 == bitpos1);
+                 return constant_boolean_node (bitpos0 == bitpos1, type);
                case NE_EXPR:
-                 return build_int_cst (boolean_type_node, bitpos0 != bitpos1);
+                 return constant_boolean_node (bitpos0 != bitpos1, type);
                case LT_EXPR:
-                 return build_int_cst (boolean_type_node, bitpos0 < bitpos1);
+                 return constant_boolean_node (bitpos0 < bitpos1, type);
                case LE_EXPR:
-                 return build_int_cst (boolean_type_node, bitpos0 <= bitpos1);
+                 return constant_boolean_node (bitpos0 <= bitpos1, type);
                case GE_EXPR:
-                 return build_int_cst (boolean_type_node, bitpos0 >= bitpos1);
+                 return constant_boolean_node (bitpos0 >= bitpos1, type);
                case GT_EXPR:
-                 return build_int_cst (boolean_type_node, bitpos0 > bitpos1);
+                 return constant_boolean_node (bitpos0 > bitpos1, type);
                default:;
                }
            }
index 4f010a2..7c6dc8d 100644 (file)
@@ -1,3 +1,8 @@
+2008-12-30  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/38564
+       * gcc.c-torture/compile/pr38564.c: New testcase.
+
 2008-12-29  Dorit Nuzman  <dorit@il.ibm.com>
             Ira Rosen  <irar@il.ibm.com>
 
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr38564.c b/gcc/testsuite/gcc.c-torture/compile/pr38564.c
new file mode 100644 (file)
index 0000000..de365cc
--- /dev/null
@@ -0,0 +1,22 @@
+struct S
+{
+  struct S *n, *p;
+} *s;
+
+void bar (void *);
+
+int
+foo (int x)
+{
+  struct S p = { &p, &p };
+  int i;
+  for (i = 0; i < x; i++)
+    bar (s);
+  return p.n == &p;
+}
+
+int dialog_calendar(int state)
+{
+  int *obj = (state == 1 ? &state : 0);
+  return (obj == &state);
+}