version.c: Bump for snapshot.
authorJeff Law <law@gcc.gnu.org>
Sun, 7 Sep 1997 22:10:34 +0000 (16:10 -0600)
committerJeff Law <law@gcc.gnu.org>
Sun, 7 Sep 1997 22:10:34 +0000 (16:10 -0600)
        * version.c: Bump for snapshot.

        * expmed.c (expand_divmod): Make op1_is_pow2 depend on unsignedp
        for negative constants.  Promote EXACT_DIV_EXPR to TRUNC_DIV_EXPR
        when op1_is_pow2.

        * final.c (shorten_branches): During first pass, assume worst
        possible alignment for ADDR_VEC and ADDR_VEC_DIFF insns.

        * Makefile.in (distclean): Remove various things left around
        by running the testsuite.

From-SVN: r15136

gcc/ChangeLog
gcc/expmed.c
gcc/final.c
gcc/version.c

index 45c72a6f0cb47a2b8fd2a835d68cbef5784000e0..bfdb162512fa1bfc1f1228ca35ca56988a7e9777 100644 (file)
@@ -1,3 +1,21 @@
+Sun Sep  7 14:19:39 1997  Jeffrey A Law  (law@cygnus.com)
+
+       * version.c: Bump for snapshot.
+
+Sun Sep  7 14:17:36 1997  Torbjorn Granlund  (tege@pdc.kth.se)
+
+       * expmed.c (expand_divmod): Make op1_is_pow2 depend on unsignedp
+       for negative constants.  Promote EXACT_DIV_EXPR to TRUNC_DIV_EXPR
+       when op1_is_pow2.
+
+Sun Sep  7 13:46:46 1997  Jeffrey A Law  (law@cygnus.com)
+
+        * final.c (shorten_branches): During first pass, assume worst
+        possible alignment for ADDR_VEC and ADDR_VEC_DIFF insns.
+
+       * Makefile.in (distclean): Remove various things left around
+       by running the testsuite.
+
 Sun Sep  7 13:16:06 1997  Manfred Hollstein  <manfred@s-direktnet.de>
 
        * configure.in (out_file): Emit definition to config.status in order
index 291e8d4aeeab1d8ecc15f4b435417be1b8be2495..fa3cc490a8c339ec4b591daf3e3e06b81f87e72a 100644 (file)
@@ -2718,7 +2718,7 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
   op1_is_constant = GET_CODE (op1) == CONST_INT;
   op1_is_pow2 = (op1_is_constant
                 && ((EXACT_POWER_OF_2_OR_ZERO_P (INTVAL (op1))
-                     || EXACT_POWER_OF_2_OR_ZERO_P (-INTVAL (op1)))));
+                     || (! unsignedp && EXACT_POWER_OF_2_OR_ZERO_P (-INTVAL (op1))))));
 
   /*
      This is the structure of expand_divmod:
@@ -2854,6 +2854,8 @@ expand_divmod (rem_flag, code, mode, op0, op1, target, unsignedp)
        code = TRUNC_DIV_EXPR;
       if (code == FLOOR_MOD_EXPR)
        code = TRUNC_MOD_EXPR;
+      if (code == EXACT_DIV_EXPR && op1_is_pow2)
+       code = TRUNC_DIV_EXPR;
     }
 
   if (op1 != const0_rtx)
index 122a733f45780eff13fd5e9d789647b5d7f4f02a..a7fe94d38cb2ebb83dcc68bfa2680ac8de895efe 100644 (file)
@@ -748,9 +748,11 @@ shorten_branches (first)
          insn_lengths[uid] = (XVECLEN (body, GET_CODE (body) == ADDR_DIFF_VEC)
                               * GET_MODE_SIZE (GET_MODE (body)));
 
-         /* Account for possible alignment.  */
-         insn_lengths[uid]
-           += unitsize - (insn_current_address & (unitsize - 1));
+         /* We don't know what address the ADDR_VEC/ADDR_DIFF_VEC will end
+            up at after branch shortening.  As a result, it is impossible
+            to determine how much padding we need at this point.  Therefore,
+            assume worst possible alignment.  */
+         insn_lengths[uid] += unitsize - 1;
 #else
          ;
 #endif
index 541ea9cfa5dcc9d2f1a7e0ba019ac113bb3b1460..c18f3ac7b9ed1a52be897c2138871862a80caaea 100644 (file)
@@ -1 +1 @@
-char *version_string = "egcs-2.90.05 970904 (gcc2-970802 experimental)";
+char *version_string = "egcs-2.90.06 970907 (gcc2-970802 experimental)";