* regrename.c (regrename_optimize): Don't accept a
part-clobbered register if the replaced register is not part
clobbered.
From-SVN: r49676
2002-02-11 Alexandre Oliva <aoliva@redhat.com>
+ * regrename.c (regrename_optimize): Don't accept a
+ part-clobbered register if the replaced register is not part
+ clobbered.
+
* calls.c (store_one_arg): In the non-BLKmode non-partial case,
take padding into account when computing the argument value.
/* See whether it accepts all modes that occur in
definition and uses. */
for (tmp = this; tmp; tmp = tmp->next_use)
- if (! HARD_REGNO_MODE_OK (new_reg, GET_MODE (*tmp->loc)))
+ if (! HARD_REGNO_MODE_OK (new_reg, GET_MODE (*tmp->loc))
+ || (tmp->need_caller_save_reg
+ && ! (HARD_REGNO_CALL_PART_CLOBBERED
+ (reg, GET_MODE (*tmp->loc)))
+ && (HARD_REGNO_CALL_PART_CLOBBERED
+ (new_reg, GET_MODE (*tmp->loc)))))
break;
if (! tmp)
{