* 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
+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
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:
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)
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
-char *version_string = "egcs-2.90.05 970904 (gcc2-970802 experimental)";
+char *version_string = "egcs-2.90.06 970907 (gcc2-970802 experimental)";