OSDN Git Service

* version.c: Bump for snapshot.
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Sep 1997 22:10:34 +0000 (22:10 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 7 Sep 1997 22:10:34 +0000 (22:10 +0000)
        * 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@15136 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 45c72a6..bfdb162 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 291e8d4..fa3cc49 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 122a733..a7fe94d 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 541ea9c..c18f3ac 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)";