diff options
author | Alexandre Oliva <aoliva@redhat.com> | 2002-02-11 13:35:14 +0000 |
---|---|---|
committer | Alexandre Oliva <aoliva@gcc.gnu.org> | 2002-02-11 13:35:14 +0000 |
commit | 66df7a985f423ee12a75bd1ae0852ad942b925c3 (patch) | |
tree | 144ced58776e7edc3dc5b6d761a57485acb2848b | |
parent | 841404cd713cb3a78eeebb451039386581a3eb01 (diff) | |
download | gcc-66df7a985f423ee12a75bd1ae0852ad942b925c3.zip gcc-66df7a985f423ee12a75bd1ae0852ad942b925c3.tar.gz gcc-66df7a985f423ee12a75bd1ae0852ad942b925c3.tar.bz2 |
regrename.c (regrename_optimize): Don't accept a part-clobbered register if the replaced register is not part...
* regrename.c (regrename_optimize): Don't accept a
part-clobbered register if the replaced register is not part
clobbered.
From-SVN: r49676
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/regrename.c | 7 |
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 748d7a7..46d6899 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 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. diff --git a/gcc/regrename.c b/gcc/regrename.c index b830b88..135eaef 100644 --- a/gcc/regrename.c +++ b/gcc/regrename.c @@ -325,7 +325,12 @@ regrename_optimize () /* 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) { |