diff options
author | aesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-09-02 22:20:52 +0000 |
---|---|---|
committer | aesok <aesok@138bc75d-0d04-0410-961f-82ee72b054a4> | 2009-09-02 22:20:52 +0000 |
commit | 4d8644f362f7ed31168e26a30d1c66e5c30e0b78 (patch) | |
tree | ceef32f2c29300b16504d1aaad31b7dd7eb7c9d5 | |
parent | 0013707d64fd8e0f480c371c7f45673b4b9edd54 (diff) | |
download | gcc-4d8644f362f7ed31168e26a30d1c66e5c30e0b78.tar.gz |
* hard-reg-set.h (call_fixed_regs): Remove.
* reginfo.c (call_fixed_regs): Remove.
(init_reg_sets_1): Remove initialization of call_fixed_regs.
(globalize_reg): Don't use call_fixed_regs.
* caller-save.c (init_caller_save): Use call_fixed_reg_set instead of
call_fixed_regs.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@151353 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/caller-save.c | 5 | ||||
-rw-r--r-- | gcc/hard-reg-set.h | 13 | ||||
-rw-r--r-- | gcc/reginfo.c | 20 |
4 files changed, 23 insertions, 24 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fce97535542..93c6092a2ef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2009-09-02 Anatoly Sokolov <aesok@post.ru> + + * hard-reg-set.h (call_fixed_regs): Remove. + * reginfo.c (call_fixed_regs): Remove. + (init_reg_sets_1): Remove initialization of call_fixed_regs. + (globalize_reg): Don't use call_fixed_regs. + * caller-save.c (init_caller_save): Use call_fixed_reg_set instead of + call_fixed_regs. + 2009-09-01 Michael Matz <matz@suse.de> * expr.h (emit_storent_insn, expand_expr_real_1, diff --git a/gcc/caller-save.c b/gcc/caller-save.c index 778a3edeec4..377ffad5e55 100644 --- a/gcc/caller-save.c +++ b/gcc/caller-save.c @@ -215,7 +215,8 @@ init_caller_save (void) for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) { - if (call_used_regs[i] && ! call_fixed_regs[i]) + if (call_used_regs[i] + && !TEST_HARD_REG_BIT (call_fixed_reg_set, i)) { for (j = 1; j <= MOVE_MAX_WORDS; j++) { @@ -223,7 +224,6 @@ init_caller_save (void) VOIDmode); if (regno_save_mode[i][j] == VOIDmode && j == 1) { - call_fixed_regs[i] = 1; SET_HARD_REG_BIT (call_fixed_reg_set, i); } } @@ -291,7 +291,6 @@ init_caller_save (void) regno_save_mode[i][j] = VOIDmode; if (j == 1) { - call_fixed_regs[i] = 1; SET_HARD_REG_BIT (call_fixed_reg_set, i); if (call_used_regs[i]) SET_HARD_REG_BIT (no_caller_save_reg_set, i); diff --git a/gcc/hard-reg-set.h b/gcc/hard-reg-set.h index 2ee713d204c..1f2c1aea911 100644 --- a/gcc/hard-reg-set.h +++ b/gcc/hard-reg-set.h @@ -600,16 +600,11 @@ extern char call_really_used_regs[]; /* The same info as a HARD_REG_SET. */ extern HARD_REG_SET call_used_reg_set; - -/* Indexed by hard register number, contains 1 for registers that are - fixed use -- i.e. in fixed_regs -- or a function value return register - or TARGET_STRUCT_VALUE_RTX or STATIC_CHAIN_REGNUM. These are the - registers that cannot hold quantities across calls even if we are - willing to save and restore them. */ - -extern char call_fixed_regs[FIRST_PSEUDO_REGISTER]; -/* The same info as a HARD_REG_SET. */ +/* Contains registers that are fixed use -- i.e. in fixed_reg_set -- or + a function value return register or TARGET_STRUCT_VALUE_RTX or + STATIC_CHAIN_REGNUM. These are the registers that cannot hold quantities + across calls even if we are willing to save and restore them. */ extern HARD_REG_SET call_fixed_reg_set; diff --git a/gcc/reginfo.c b/gcc/reginfo.c index 9842dc14f77..9b03d64f590 100644 --- a/gcc/reginfo.c +++ b/gcc/reginfo.c @@ -101,13 +101,11 @@ char call_really_used_regs[] = CALL_REALLY_USED_REGISTERS; #endif -/* Indexed by hard register number, contains 1 for registers that are - fixed use or call used registers that cannot hold quantities across - calls even if we are willing to save and restore them. call fixed - registers are a subset of call used registers. */ -char call_fixed_regs[FIRST_PSEUDO_REGISTER]; +/* Contains registers that are fixed use -- i.e. in fixed_reg_set -- or + a function value return register or TARGET_STRUCT_VALUE_RTX or + STATIC_CHAIN_REGNUM. These are the registers that cannot hold quantities + across calls even if we are willing to save and restore them. */ -/* The same info as a HARD_REG_SET. */ HARD_REG_SET call_fixed_reg_set; /* Indexed by hard register number, contains 1 for registers @@ -515,8 +513,6 @@ init_reg_sets_1 (void) else CLEAR_REG_SET (regs_invalidated_by_call_regset); - memcpy (call_fixed_regs, fixed_regs, sizeof call_fixed_regs); - for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) { /* call_used_regs must include fixed_regs. */ @@ -531,8 +527,6 @@ init_reg_sets_1 (void) if (call_used_regs[i]) SET_HARD_REG_BIT (call_used_reg_set, i); - if (call_fixed_regs[i]) - SET_HARD_REG_BIT (call_fixed_reg_set, i); /* There are a couple of fixed registers that we know are safe to exclude from being clobbered by calls: @@ -571,12 +565,14 @@ init_reg_sets_1 (void) } } + COPY_HARD_REG_SET(call_fixed_reg_set, fixed_reg_set); + /* Preserve global registers if called more than once. */ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) { if (global_regs[i]) { - fixed_regs[i] = call_used_regs[i] = call_fixed_regs[i] = 1; + fixed_regs[i] = call_used_regs[i] = 1; SET_HARD_REG_BIT (fixed_reg_set, i); SET_HARD_REG_BIT (call_used_reg_set, i); SET_HARD_REG_BIT (call_fixed_reg_set, i); @@ -870,7 +866,7 @@ globalize_reg (int i) if (fixed_regs[i]) return; - fixed_regs[i] = call_used_regs[i] = call_fixed_regs[i] = 1; + fixed_regs[i] = call_used_regs[i] = 1; #ifdef CALL_REALLY_USED_REGISTERS call_really_used_regs[i] = 1; #endif |