diff mbox series

rs6000_expand_binop_builtin

Message ID CAGWvnykXxjQCGdMqEyUZNBn-SuS-szyAeapzXE_9QH7VO11rag@mail.gmail.com
State New
Headers show
Series rs6000_expand_binop_builtin | expand

Commit Message

David Edelsohn Aug. 30, 2017, 2:54 p.m. UTC
The patch to convert rs6000.c:rs6000_expand_binop_builtin to switch
statement broke bootstrap because some of the CODE_FOR_XXX labels are
not guaranteed to be defined or have unique values in all
configurations.

Restores bootstrap on AIX.

Committed.

Thanks, David


        * config/rs6000/rs6000.c (rs6000_expand_binop_builtin): Revert
        back to if statements, including unpack.
diff mbox series

Patch

Index: rs6000.c
===================================================================
--- rs6000.c    (revision 251533)
+++ rs6000.c    (working copy)
@@ -14000,17 +14000,14 @@ 
   if (arg0 == error_mark_node || arg1 == error_mark_node)
     return const0_rtx;

-  switch (icode)
+  if (icode == CODE_FOR_altivec_vcfux
+      || icode == CODE_FOR_altivec_vcfsx
+      || icode == CODE_FOR_altivec_vctsxs
+      || icode == CODE_FOR_altivec_vctuxs
+      || icode == CODE_FOR_altivec_vspltb
+      || icode == CODE_FOR_altivec_vsplth
+      || icode == CODE_FOR_altivec_vspltw)
     {
-    default:
-      break;
-    case CODE_FOR_altivec_vcfux:
-    case CODE_FOR_altivec_vcfsx:
-    case CODE_FOR_altivec_vctsxs:
-    case CODE_FOR_altivec_vctuxs:
-    case CODE_FOR_altivec_vspltb:
-    case CODE_FOR_altivec_vsplth:
-    case CODE_FOR_altivec_vspltw:
       /* Only allow 5-bit unsigned literals.  */
       STRIP_NOPS (arg1);
       if (TREE_CODE (arg1) != INTEGER_CST
@@ -14019,15 +14016,16 @@ 
          error ("argument 2 must be a 5-bit unsigned literal");
          return CONST0_RTX (tmode);
        }
-      break;
-    case CODE_FOR_dfptstsfi_eq_dd:
-    case CODE_FOR_dfptstsfi_lt_dd:
-    case CODE_FOR_dfptstsfi_gt_dd:
-    case CODE_FOR_dfptstsfi_unordered_dd:
-    case CODE_FOR_dfptstsfi_eq_td:
-    case CODE_FOR_dfptstsfi_lt_td:
-    case CODE_FOR_dfptstsfi_gt_td:
-    case CODE_FOR_dfptstsfi_unordered_td:
+    }
+  else if (icode == CODE_FOR_dfptstsfi_eq_dd
+      || icode == CODE_FOR_dfptstsfi_lt_dd
+      || icode == CODE_FOR_dfptstsfi_gt_dd
+      || icode == CODE_FOR_dfptstsfi_unordered_dd
+      || icode == CODE_FOR_dfptstsfi_eq_td
+      || icode == CODE_FOR_dfptstsfi_lt_td
+      || icode == CODE_FOR_dfptstsfi_gt_td
+      || icode == CODE_FOR_dfptstsfi_unordered_td)
+    {
       /* Only allow 6-bit unsigned literals.  */
       STRIP_NOPS (arg0);
       if (TREE_CODE (arg0) != INTEGER_CST
@@ -14036,12 +14034,13 @@ 
          error ("argument 1 must be a 6-bit unsigned literal");
          return CONST0_RTX (tmode);
        }
-      break;
-    case CODE_FOR_xststdcqp:
-    case CODE_FOR_xststdcdp:
-    case CODE_FOR_xststdcsp:
-    case CODE_FOR_xvtstdcdp:
-    case CODE_FOR_xvtstdcsp:
+    }
+  else if (icode == CODE_FOR_xststdcqp
+          || icode == CODE_FOR_xststdcdp
+          || icode == CODE_FOR_xststdcsp
+          || icode == CODE_FOR_xvtstdcdp
+          || icode == CODE_FOR_xvtstdcsp)
+    {
       /* Only allow 7-bit unsigned literals. */
       STRIP_NOPS (arg1);
       if (TREE_CODE (arg1) != INTEGER_CST
@@ -14050,12 +14049,13 @@ 
          error ("argument 2 must be a 7-bit unsigned literal");
          return CONST0_RTX (tmode);
        }
-      break;
-    case CODE_FOR_unpackv1ti:
-    case CODE_FOR_unpackkf:
-    case CODE_FOR_unpacktf:
-    case CODE_FOR_unpackif:
-    case CODE_FOR_unpacktd:
+    }
+  else if (icode == CODE_FOR_unpackv1ti
+          || icode == CODE_FOR_unpackkf
+          || icode == CODE_FOR_unpacktf
+          || icode == CODE_FOR_unpackif
+          || icode == CODE_FOR_unpacktd)
+    {
       /* Only allow 1-bit unsigned literals. */
       STRIP_NOPS (arg1);
       if (TREE_CODE (arg1) != INTEGER_CST
@@ -14064,7 +14064,6 @@ 
          error ("argument 2 must be a 1-bit unsigned literal");
          return CONST0_RTX (tmode);
        }
-      break;
     }

   if (target == 0