visium.c (visium_select_cc_mode): Return CCmode for any RTX present on the RHS of...
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 17 Oct 2017 20:28:33 +0000 (20:28 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 17 Oct 2017 20:28:33 +0000 (20:28 +0000)
* config/visium/visium.c (visium_select_cc_mode): Return CCmode
for any RTX present on the RHS of a SET.
* compare-elim.c (try_eliminate_compare): Restore comment.

From-SVN: r253830

gcc/ChangeLog
gcc/compare-elim.c
gcc/config/visium/visium.c

index f7de68489c8af4575fdcc381494971fa1f3f5536..20b7b3f6e9748e04b491ff6577087ad4b2247fc1 100644 (file)
@@ -1,3 +1,9 @@
+2017-10-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/visium/visium.c (visium_select_cc_mode): Return CCmode for
+       any RTX present on the RHS of a SET.
+       * compare-elim.c (try_eliminate_compare): Restore comment.
+
 2017-10-17  Jakub Jelinek  <jakub@redhat.com>
 
        * langhooks.h (struct lang_hooks): Document that tree_size langhook
index 794a452f98bc81a2fd12bb667c7ff936b22f7e0e..086fbc76f011c2896af2318eb10bbd9b45797b55 100644 (file)
@@ -729,6 +729,7 @@ try_eliminate_compare (struct comparison *cmp)
   if (try_merge_compare (cmp))
     return true;
 
+  /* We must have found an interesting "clobber" preceding the compare.  */
   if (cmp->prev_clobber == NULL)
     return false;
 
index 381d432778d2a66e6ec9f46ada22f4bc98d7bf5c..3311dd2a349d39fd730cb6000c67d6ab17ad0145 100644 (file)
@@ -2938,12 +2938,6 @@ visium_select_cc_mode (enum rtx_code code, rtx op0, rtx op1)
       /* This is a btst, the result is in C instead of Z.  */
       return CCCmode;
 
-    case CONST_INT:
-      /* This is a degenerate case, typically an uninitialized variable.  */
-      gcc_assert (op0 == constm1_rtx);
-
-      /* ... fall through ... */
-
     case REG:
     case AND:
     case IOR:
@@ -2960,6 +2954,17 @@ visium_select_cc_mode (enum rtx_code code, rtx op0, rtx op1)
         when applied to a comparison with zero.  */
       return CCmode;
 
+    /* ??? Cater to the junk RTXes sent by try_merge_compare.  */
+    case ASM_OPERANDS:
+    case CALL:
+    case CONST_INT:
+    case LO_SUM:
+    case HIGH:
+    case MEM:
+    case UNSPEC:
+    case ZERO_EXTEND:
+      return CCmode;
+
     default:
       gcc_unreachable ();
     }