+2000-09-29 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * loop.c (check_final_value): A GIV is not replaceable if used
+ before set.
+
Fri Sep 29 10:04:12 2000 Jeffrey A Law (law@cygnus.com)
* version.c: Bump to gcc-2.97.
* configure: Rebuilt.
2000-09-28 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
* doloop.c (doloop_modify): Prevent delete_insn() from
deleting too much. Prefer loop->top over loop->start as
target for the new JUMP insn.
* config/avr/avr.md ("*negsi2"): substitute %@ to __zero_reg__
* config/avr/libgcc.S: Lost part of the previous patch.
-2000-08-31 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
-
- * rs6000/rs6000.h (NO_DOLLAR_IN_LABEL, DOLLARS_IN_IDENTIFIERS,
- ENCODE_SECTION_INFO, ASM_OUTPUT_SPECIAL_POOL_ENTRY_P): Move from
- here...
- * rs6000/aix.h: ...to here.
- * rs6000/linux.h (ASM_APP_ON, ASM_APP_OFF): Define to Linux-style.
- * rs6000/rs6000.c (rs6000_select_section): Handle CONSTRUCTOR.
- (rs6000_unique_section): Likewise.
-
2000-08-31 J. David Anglin <dave@hiauly1.hia.nrc.ca>
* gthr-dce.h (__gthread_objc_mutex_allocate): Create a pthread_mutex_t
or all uses follow that insn in the same basic block),
- its final value can be calculated (this condition is different
than the one above in record_giv)
+ - it's not used before the it's set
- no assignments to the biv occur during the giv's lifetime. */
#if 0
if ((final_value = final_giv_value (loop, v))
&& (v->always_computable || last_use_this_basic_block (v->dest_reg, v->insn)))
{
- int biv_increment_seen = 0;
+ int biv_increment_seen = 0, before_giv_insn = 0;
rtx p = v->insn;
rtx last_giv_use;
{
p = NEXT_INSN (p);
if (p == loop->end)
- p = NEXT_INSN (loop->start);
+ {
+ before_giv_insn = 1;
+ p = NEXT_INSN (loop->start);
+ }
if (p == v->insn)
break;
if (reg_mentioned_p (v->dest_reg, PATTERN (p)))
{
- if (biv_increment_seen)
+ if (biv_increment_seen || before_giv_insn)
{
v->replaceable = 0;
v->not_replaceable = 1;
<= UNITS_PER_WORD)
&& (GET_MODE_CLASS (GET_MODE (SET_DEST (set)))
== MODE_INT)
- && SUBREG_REG (SET_DEST (set)) == x))
- && basic_induction_var (loop, SET_SRC (set),
- (GET_MODE (SET_SRC (set)) == VOIDmode
- ? GET_MODE (x)
- : GET_MODE (SET_SRC (set))),
- dest_reg, insn,
- inc_val, mult_val, location))
- return 1;
+ && SUBREG_REG (SET_DEST (set)) == x)))
+ return basic_induction_var (loop, SET_SRC (set),
+ (GET_MODE (SET_SRC (set)) == VOIDmode
+ ? GET_MODE (x)
+ : GET_MODE (SET_SRC (set))),
+ dest_reg, insn,
+ inc_val, mult_val, location);
}
/* Fall through. */