(build_binary_op): For TRUNC_MOD_EXPR and FLOOR_MOD_EXPR, set common.
authorRichard Stallman <rms@gnu.org>
Tue, 26 Oct 1993 17:00:09 +0000 (17:00 +0000)
committerRichard Stallman <rms@gnu.org>
Tue, 26 Oct 1993 17:00:09 +0000 (17:00 +0000)
From-SVN: r5895

gcc/c-typeck.c

index c12f775..da34eee 100644 (file)
@@ -1982,14 +1982,17 @@ build_binary_op (code, orig_op0, orig_op1, convert_p)
     case TRUNC_MOD_EXPR:
     case FLOOR_MOD_EXPR:
       if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
-       /* Although it would be tempting to shorten always here, doing so loses
-          on some targets, since the modulo instruction is undefined if the
-          quotient can't be represented in the computation mode.  We shorten
-          only if unsigned or if dividing by something we know != -1.  */
-       shorten = (TREE_UNSIGNED (orig_op0)
-                  || (TREE_CODE (op1) == INTEGER_CST
-                      && (TREE_INT_CST_LOW (op1) != -1
-                          || TREE_INT_CST_HIGH (op1) != -1)));
+       {
+         /* Although it would be tempting to shorten always here, that loses
+            on some targets, since the modulo instruction is undefined if the
+            quotient can't be represented in the computation mode.  We shorten
+            only if unsigned or if dividing by something we know != -1.  */
+         shorten = (TREE_UNSIGNED (orig_op0)
+                    || (TREE_CODE (op1) == INTEGER_CST
+                        && (TREE_INT_CST_LOW (op1) != -1
+                            || TREE_INT_CST_HIGH (op1) != -1)));
+         common = 1;
+       }
       break;
 
     case TRUTH_ANDIF_EXPR: