From 6a69653af2efb61defd912709eac5d2612c857a8 Mon Sep 17 00:00:00 2001 From: Catherine Moore Date: Tue, 19 Dec 2000 16:10:19 +0000 Subject: [PATCH] reload1.c (reload_combine): Take multi-hard-regs into account when processing CALL_INSN_FUNCTION_USAGE. * reload1.c (reload_combine): Take multi-hard-regs into account when processing CALL_INSN_FUNCTION_USAGE. From-SVN: r38379 --- gcc/ChangeLog | 5 +++++ gcc/reload1.c | 31 +++++++++++++++++++------------ 2 files changed, 24 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7e5508c698b..08b5a2d6e68 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-12-19 Catherine Moore + + * reload1.c (reload_combine): Take multi-hard-regs into account + when processing CALL_INSN_FUNCTION_USAGE. + 2000-12-19 Joseph S. Myers * invoke.texi (-print-search-dirs): Make references to cpp refer diff --git a/gcc/reload1.c b/gcc/reload1.c index 1babaf7a74b..ee252a61d1b 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -8651,20 +8651,27 @@ reload_combine () for (link = CALL_INSN_FUNCTION_USAGE (insn); link; link = XEXP (link, 1)) - if (GET_CODE (XEXP (XEXP (link, 0), 0)) == REG) - { - unsigned int regno = REGNO (XEXP (XEXP (link, 0), 0)); + { + rtx usage_rtx = XEXP (XEXP (link, 0), 0); + if (GET_CODE (usage_rtx) == REG) + { + int i; + unsigned int start_reg = REGNO (usage_rtx); + unsigned int num_regs = + HARD_REGNO_NREGS (start_reg, GET_MODE (usage_rtx)); + unsigned int end_reg = start_reg + num_regs - 1; + for (i = start_reg; i <= end_reg; i++) + if (GET_CODE (XEXP (link, 0)) == CLOBBER) + { + reg_state[i].use_index = RELOAD_COMBINE_MAX_USES; + reg_state[i].store_ruid = reload_combine_ruid; + } + else + reg_state[i].use_index = -1; + } + } - if (GET_CODE (XEXP (link, 0)) == CLOBBER) - { - reg_state[regno].use_index = RELOAD_COMBINE_MAX_USES; - reg_state[regno].store_ruid = reload_combine_ruid; - } - else - reg_state[regno].use_index = -1; - } } - else if (GET_CODE (insn) == JUMP_INSN && GET_CODE (PATTERN (insn)) != RETURN) { -- 2.30.2