diff options
author | Richard Kenner <kenner@gcc.gnu.org> | 1992-04-03 19:22:29 -0500 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 1992-04-03 19:22:29 -0500 |
commit | 09835ed242920b265fe83b14436121fb325de9a4 (patch) | |
tree | a7bddd8b09006ffc99a1f687300a286ec249ed0d /gcc | |
parent | 89d825c9a663b84fb5b4dfae80650d2c340bc69f (diff) | |
download | gcc-09835ed242920b265fe83b14436121fb325de9a4.zip gcc-09835ed242920b265fe83b14436121fb325de9a4.tar.gz gcc-09835ed242920b265fe83b14436121fb325de9a4.tar.bz2 |
*** empty log message ***
From-SVN: r676
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/caller-save.c | 10 | ||||
-rw-r--r-- | gcc/config/m88k/m88k.md | 16 |
2 files changed, 14 insertions, 12 deletions
diff --git a/gcc/caller-save.c b/gcc/caller-save.c index d534b31..6e16711 100644 --- a/gcc/caller-save.c +++ b/gcc/caller-save.c @@ -522,6 +522,16 @@ insert_save_restore (insn, save_p, regno, insn_mode) enum insn_code code; int i; + /* A common failure mode if register status is not correct in the RTL + is for this routine to be called with a REGNO we didn't expect to + save. That will cause us to write an insn with a (nil) SET_DEST + or SET_SRC. Instead of doing so and causing a crash later, check + for this common case and abort here instead. This will remove one + step in debugging such problems. */ + + if (regno_save_mem[regno] == 0) + abort (); + /* If INSN is a CALL_INSN, we must insert our insns before any USE insns in front of the CALL_INSN. */ diff --git a/gcc/config/m88k/m88k.md b/gcc/config/m88k/m88k.md index 7f9841c..4212534 100644 --- a/gcc/config/m88k/m88k.md +++ b/gcc/config/m88k/m88k.md @@ -1244,7 +1244,6 @@ ;; operand 3 is the offset for the source and destination pointers ;; operand 4 is the first value to be loaded ;; operand 5 is the register to hold the value (r4 or r5) -;; Upon completion, r2 and r3 are unchanged (define_expand "call_block_move" [(set (reg:SI 3) (minus:SI (match_operand:SI 2 "register_operand" "r") @@ -1255,13 +1254,10 @@ (match_dup 3))) (use (reg:SI 2)) (use (reg:SI 3)) - (use (reg:SI 4)) - (use (reg:SI 5)) + (use (match_dup 5)) (parallel [(call (mem:SI (match_operand 0 "" "")) (const_int 0)) - (use (reg:SI 1))]) - (clobber (reg:SI 4)) - (clobber (reg:SI 5))] + (use (reg:SI 1))])] "" "") @@ -1279,15 +1275,11 @@ (set (reg:SI 6) (match_operand:SI 6 "immediate_operand" "i")) (use (reg:SI 2)) (use (reg:SI 3)) - (use (reg:SI 4)) - (use (reg:SI 5)) + (use (match_dup 5)) (use (reg:SI 6)) (parallel [(call (mem:SI (match_operand 0 "" "")) (const_int 0)) - (use (reg:SI 1))]) - (clobber (reg:SI 4)) - (clobber (reg:SI 5)) - (clobber (reg:SI 6))] + (use (reg:SI 1))])] "" "") |