diff options
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 9 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.h | 2 |
3 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index dc90701..80363e6 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-03-11 Aldy Hernandez <aldyh@redhat.com> + + * config/rs6000/rs6000.c (rs6000_stack_info): Remove + insn_chain_scanned. Use insn_chain_scanned_p in machine_function. + + * config/rs6000/rs6000.h (machine_function): Add insn_chain_scanned_p. + Tue Mar 11 21:19:03 2003 Alexandre Oliva <aoliva@redhat.com> * toplev.c (independent_decode_option): Return success for --help, diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 38a2e32..b64c8cc 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -9169,7 +9169,6 @@ rs6000_stack_info () enum rs6000_abi abi; int ehrd_size; int total_raw_size; - static int insn_chain_scanned = -1; /* Zero all fields portably. */ info = zero_info; @@ -9177,9 +9176,11 @@ rs6000_stack_info () if (TARGET_SPE) { /* Cache value so we don't rescan instruction chain over and over. */ - if (insn_chain_scanned < 0) - insn_chain_scanned = (int) spe_func_has_64bit_regs_p (); - info_ptr->spe_64bit_regs_used = insn_chain_scanned; + if (cfun->machine->insn_chain_scanned_p == 0) + { + cfun->machine->insn_chain_scanned_p = 1; + info_ptr->spe_64bit_regs_used = (int) spe_func_has_64bit_regs_p (); + } } /* Select which calling sequence. */ diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h index e2c1f63..fe932a6 100644 --- a/gcc/config/rs6000/rs6000.h +++ b/gcc/config/rs6000/rs6000.h @@ -1649,6 +1649,8 @@ typedef struct machine_function GTY(()) int sysv_varargs_p; /* Flags if __builtin_return_address (n) with n >= 1 was used. */ int ra_needs_full_frame; + /* Whether the instruction chain has been scanned already. */ + int insn_chain_scanned_p; } machine_function; /* Define a data type for recording info about an argument list |