From a7c07f1ef066dd8817eb2da0c66f60aef5fb3e84 Mon Sep 17 00:00:00 2001 From: Richard Henderson Date: Tue, 17 Jul 2001 20:32:46 -0700 Subject: [PATCH] * reload.c (push_secondary_reload): Accept empty-string for ALL_REGS. From-SVN: r44096 --- gcc/ChangeLog | 4 ++++ gcc/reload.c | 17 ++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b0525f874a0..19e715e0583 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2001-07-17 Richard Henderson + + * reload.c (push_secondary_reload): Accept empty-string for ALL_REGS. + 2001-07-17 Richard Henderson * calls.c (prepare_call_address): New parameter SIBCALLP. If true, diff --git a/gcc/reload.c b/gcc/reload.c index 03e5d21e00b..b4d82128862 100644 --- a/gcc/reload.c +++ b/gcc/reload.c @@ -372,11 +372,18 @@ push_secondary_reload (in_p, x, opnum, optional, reload_class, reload_mode, in operand 1. Outputs should have an initial "=", which we must skip. */ - char insn_letter - = insn_data[(int) icode].operand[!in_p].constraint[in_p]; - enum reg_class insn_class - = (insn_letter == 'r' ? GENERAL_REGS - : REG_CLASS_FROM_LETTER ((unsigned char) insn_letter)); + enum reg_class insn_class; + + if (insn_data[(int) icode].operand[!in_p].constraint[0] == 0) + insn_class = ALL_REGS; + else + { + char insn_letter + = insn_data[(int) icode].operand[!in_p].constraint[in_p]; + insn_class + = (insn_letter == 'r' ? GENERAL_REGS + : REG_CLASS_FROM_LETTER ((unsigned char) insn_letter)); + } if (insn_class == NO_REGS || (in_p