Fix signedness of compares expanding debug exprs.
authorAlexandre Oliva <aoliva@redhat.com>
Wed, 4 Feb 2015 14:24:00 +0000 (14:24 +0000)
committerAlexandre Oliva <aoliva@gcc.gnu.org>
Wed, 4 Feb 2015 14:24:00 +0000 (14:24 +0000)
for  gcc/ChangeLog

PR debug/64817
* cfgexpand.c (expand_debug_expr): Compute unsignedp from
operands for tcc_comparison exprs.  Fix typos.

for  gcc/testsuite/ChangeLog

PR debug/64817
* gcc.dg/pr64817-3.c: New.

From-SVN: r220406

gcc/ChangeLog
gcc/cfgexpand.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/pr64817-3.c [new file with mode: 0644]

index 977e208052c64e1a880aa2598b420098f82d1bca..47133e92ecdc56746e7b8e01729fdb072da510d7 100644 (file)
@@ -1,5 +1,9 @@
 2015-02-04  Alexandre Oliva <aoliva@redhat.com>
 
+       PR debug/64817
+       * cfgexpand.c (expand_debug_expr): Compute unsignedp from
+       operands for tcc_comparison exprs.  Fix typos.
+
        PR debug/64817
        * simplify-rtx.c (simplify_binary_operation_1): Simplify one
        of two XORs that have an intervening AND or IOR.
index 12021de0dd5adf82d6f428977c649c69c62e6dc0..7dfe1f6e7f52f420d9a1ada3862728653b9cae99 100644 (file)
@@ -3911,7 +3911,6 @@ expand_debug_expr (tree exp)
 
     binary:
     case tcc_binary:
-    case tcc_comparison:
       op1 = expand_debug_expr (TREE_OPERAND (exp, 1));
       if (!op1)
        return NULL_RTX;
@@ -3925,6 +3924,10 @@ expand_debug_expr (tree exp)
        return NULL_RTX;
       break;
 
+    case tcc_comparison:
+      unsignedp = TYPE_UNSIGNED (TREE_TYPE (TREE_OPERAND (exp, 0)));
+      goto binary;
+
     case tcc_type:
     case tcc_statement:
       gcc_unreachable ();
@@ -4006,7 +4009,7 @@ expand_debug_expr (tree exp)
        op0 = copy_rtx (op0);
 
       if (GET_MODE (op0) == BLKmode
-         /* If op0 is not BLKmode, but BLKmode is, adjust_mode
+         /* If op0 is not BLKmode, but mode is, adjust_mode
             below would ICE.  While it is likely a FE bug,
             try to be robust here.  See PR43166.  */
          || mode == BLKmode
@@ -5285,7 +5288,7 @@ expand_gimple_basic_block (basic_block bb, bool disable_tail_calls)
 
                if (have_debug_uses)
                  {
-                   /* OP is a TERed SSA name, with DEF it's defining
+                   /* OP is a TERed SSA name, with DEF its defining
                       statement, and where OP is used in further debug
                       instructions.  Generate a debug temporary, and
                       replace all uses of OP in debug insns with that
index 0f99a1f284fbf2cc9c1df7b1085f2c40db37868a..c1b430534ab5a3722d4c4991c0c9d71a3e6571a5 100644 (file)
@@ -1,3 +1,8 @@
+2015-02-04  Alexandre Oliva <aoliva@redhat.com>
+
+       PR debug/64817
+       * gcc.dg/pr64817-3.c: New.
+
 2015-02-04  Jakub Jelinek  <jakub@redhat.com>
            Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
 
diff --git a/gcc/testsuite/gcc.dg/pr64817-3.c b/gcc/testsuite/gcc.dg/pr64817-3.c
new file mode 100644 (file)
index 0000000..3fe0117
--- /dev/null
@@ -0,0 +1,13 @@
+/* PR debug/64817 */
+/* { dg-do compile } */
+/* { dg-options "-O3 -g" } */
+
+int a;
+
+void
+foo (void)
+{
+  int e;
+  a = ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((a & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) & 231) ^ 14) ^ 1;
+  e = (a > 0);
+}