aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1996-03-31 05:10:01 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1996-03-31 05:10:01 -0500
commite4329280ac5f866a44f552a247b5b7f356495dd3 (patch)
tree962f3d348a0277fa81522389b0d198efa2d90b9d /gcc
parentdc1d6150715922e41fa076706587fbd5de6203a7 (diff)
downloadgcc-e4329280ac5f866a44f552a247b5b7f356495dd3.zip
gcc-e4329280ac5f866a44f552a247b5b7f356495dd3.tar.gz
gcc-e4329280ac5f866a44f552a247b5b7f356495dd3.tar.bz2
(propagate_block): CALL_INSNs don't kill fixed regs.
From-SVN: r11646
Diffstat (limited to 'gcc')
-rw-r--r--gcc/flow.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/flow.c b/gcc/flow.c
index 7811178..a792e7f 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -1622,12 +1622,13 @@ propagate_block (old, first, last, final, significant, bnum)
final, insn);
/* Each call clobbers all call-clobbered regs that are not
- global. Note that the function-value reg is a
+ global or fixed. Note that the function-value reg is a
call-clobbered reg, and mark_set_regs has already had
a chance to handle it. */
for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
- if (call_used_regs[i] && ! global_regs[i])
+ if (call_used_regs[i] && ! global_regs[i]
+ && ! fixed_regs[i])
dead[i / REGSET_ELT_BITS]
|= ((REGSET_ELT_TYPE) 1 << (i % REGSET_ELT_BITS));