diff options
author | Jan Hubicka <jh@suse.cz> | 2002-09-30 21:35:17 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2002-09-30 19:35:17 +0000 |
commit | 344b78b848693ada74b0ce238153c86fdf02ee09 (patch) | |
tree | 935edce515bf5aaa1706595857265e30bbcf42c7 /gcc/reload1.c | |
parent | 5a9a196102ff0d1bf27831e0ce396049cc334db8 (diff) | |
download | gcc-344b78b848693ada74b0ce238153c86fdf02ee09.zip gcc-344b78b848693ada74b0ce238153c86fdf02ee09.tar.gz gcc-344b78b848693ada74b0ce238153c86fdf02ee09.tar.bz2 |
reload.c (push_reload): Handle subregs and secondary memory.
* reload.c (push_reload): Handle subregs and secondary memory.
* reload1.c (gen_reload): Likewise.
* jump.c (reg_or_subregno): New function.
* rtl.h (reg_or_subregno): Declare
* unroll.c (find_splittable_givs): Handle subregs.
From-SVN: r57663
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 726a4bf..ea703f1 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -7532,10 +7532,12 @@ gen_reload (out, in, opnum, type) #ifdef SECONDARY_MEMORY_NEEDED /* If we need a memory location to do the move, do it that way. */ - else if (GET_CODE (in) == REG && REGNO (in) < FIRST_PSEUDO_REGISTER - && GET_CODE (out) == REG && REGNO (out) < FIRST_PSEUDO_REGISTER - && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (REGNO (in)), - REGNO_REG_CLASS (REGNO (out)), + else if ((GET_CODE (in) == REG || GET_CODE (in) == SUBREG) + && reg_or_subregno (in) < FIRST_PSEUDO_REGISTER + && (GET_CODE (out) == REG || GET_CODE (out) == SUBREG) + && reg_or_subregno (out) < FIRST_PSEUDO_REGISTER + && SECONDARY_MEMORY_NEEDED (REGNO_REG_CLASS (reg_or_subregno (in)), + REGNO_REG_CLASS (reg_or_subregno (out)), GET_MODE (out))) { /* Get the memory to use and rewrite both registers to its mode. */ |