diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-02-02 17:22:44 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-02-02 17:22:44 -0500 |
commit | 6e7348c1fedc354f534b59a3d156c8f56b628fb3 (patch) | |
tree | 5af35fb467fdef45a7c21ad818b2911d20bd2a76 /gcc | |
parent | a6113470258b407e46d578407b39accac50fdec5 (diff) | |
download | gcc-6e7348c1fedc354f534b59a3d156c8f56b628fb3.zip gcc-6e7348c1fedc354f534b59a3d156c8f56b628fb3.tar.gz gcc-6e7348c1fedc354f534b59a3d156c8f56b628fb3.tar.bz2 |
*** empty log message ***
From-SVN: r270
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/reorg.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c index deb97e0..cee2b74 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -273,6 +273,7 @@ mark_referenced_resources (x, res, include_called_routine) res->cc = 1; return; + case UNSPEC_VOLATILE: case ASM_INPUT: /* Traditional asm's are always volatile. */ res->volatil = 1; @@ -2069,9 +2070,16 @@ mark_target_live_regs (target, res) sp, ap, and fp. Do this before setting the result of the call live. */ for (i = 0; i < FIRST_PSEUDO_REGISTER; i++) - if (call_used_regs[i] && ! fixed_regs[i] + if (call_used_regs[i] && i != STACK_POINTER_REGNUM && i != FRAME_POINTER_REGNUM - && i != ARG_POINTER_REGNUM) + && i != ARG_POINTER_REGNUM +#if ARG_POINTER_REGNUM != FRAME_POINTER_REGNUM + && ! (i == ARG_POINTER_REGNUM && fixed_regs[i]) +#endif +#ifdef PIC_OFFSET_TABLE_REGNUM + && ! (i == PIC_OFFSET_TABLE_REGNUM && flag_pic) +#endif + ) CLEAR_HARD_REG_BIT (current_live_regs, i); } |