From 66df7a985f423ee12a75bd1ae0852ad942b925c3 Mon Sep 17 00:00:00 2001 From: Alexandre Oliva Date: Mon, 11 Feb 2002 13:35:14 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 4 ++++ gcc/regrename.c | 7 ++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 748d7a7393a..46d689930b9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2002-02-11 Alexandre Oliva + * 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 b830b889907..135eaefd0e1 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) { -- 2.30.2