diff options
author | Doug Evans <dje@gnu.org> | 1994-05-27 23:29:18 +0000 |
---|---|---|
committer | Doug Evans <dje@gnu.org> | 1994-05-27 23:29:18 +0000 |
commit | 7f21d440de1553836ad853bdd338fa45caafaf00 (patch) | |
tree | 2b880c424efa11c2c8d2cf47b592ab48227c4182 /gcc/regclass.c | |
parent | 0304dfbb673b5a0ce0af93e9fa6821ab9937d1e5 (diff) | |
download | gcc-7f21d440de1553836ad853bdd338fa45caafaf00.zip gcc-7f21d440de1553836ad853bdd338fa45caafaf00.tar.gz gcc-7f21d440de1553836ad853bdd338fa45caafaf00.tar.bz2 |
toplev.c (compile_file): Call init_regs after `word_mode' is valid.
* toplev.c (compile_file): Call init_regs after `word_mode' is valid.
* regclass.c (init_reg_modes): If choose_hard_reg_mode can't find a
valid mode, fall back to word_mode.
From-SVN: r7379
Diffstat (limited to 'gcc/regclass.c')
-rw-r--r-- | gcc/regclass.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/gcc/regclass.c b/gcc/regclass.c index 2c2c36ff5..bef30ab 100644 --- a/gcc/regclass.c +++ b/gcc/regclass.c @@ -402,7 +402,18 @@ init_reg_modes () register int i; for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) - reg_raw_mode[i] = choose_hard_reg_mode (i, 1); + { + reg_raw_mode[i] = choose_hard_reg_mode (i, 1); + + /* If we couldn't find a valid mode, fall back to `word_mode'. + ??? We assume `word_mode' has already been initialized. + ??? One situation in which we need to do this is on the mips where + HARD_REGNO_NREGS (fpreg, [SD]Fmode) returns 2. Ideally we'd like + to use DF mode for the even registers and VOIDmode for the odd + (for the cpu models where the odd ones are inaccessable). */ + if (reg_raw_mode[i] == VOIDmode) + reg_raw_mode[i] = word_mode; + } } /* Finish initializing the register sets and |