diff options
author | Dale Johannesen <dalej@apple.com> | 2002-04-16 21:56:09 +0000 |
---|---|---|
committer | David Edelsohn <dje@gcc.gnu.org> | 2002-04-16 17:56:09 -0400 |
commit | 178c3eff52cd705a16548be4ff8878cc2f1a8e3b (patch) | |
tree | eb032992e2a8b3df8b807ef7eaee71a9dc4e654e | |
parent | 7d6f6369938e8ce41d3d748da8c7b6ce663ccd4a (diff) | |
download | gcc-178c3eff52cd705a16548be4ff8878cc2f1a8e3b.zip gcc-178c3eff52cd705a16548be4ff8878cc2f1a8e3b.tar.gz gcc-178c3eff52cd705a16548be4ff8878cc2f1a8e3b.tar.bz2 |
rs6000.c (rs6000_output_function_prologue): Compute instruction addresses.
2002-04-16 Dale Johannesen <dalej@apple.com>
* config/rs6000/rs6000.c (rs6000_output_function_prologue): Compute
instruction addresses.
(rs6000_output_function_epilogue): Likewise.
From-SVN: r52378
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 28 |
2 files changed, 31 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index da55bbc..3a185ec 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2002-04-16 Dale Johannesen <dalej@apple.com> + + * config/rs6000/rs6000.c (rs6000_output_function_prologue): Compute + instruction addresses. + (rs6000_output_function_epilogue): Likewise. + 2002-04-16 Paolo Carlini <pcarlini@unitus.it> * c-parse.in (poplevel, compstmt_start, diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index efd3a0b..bb16748 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -7250,11 +7250,11 @@ rs6000_emit_cmove (dest, op, true_cond, false_cond) rtx temp; /* These modes should always match. */ - if ( GET_MODE (op1) != compare_mode ) + if (GET_MODE (op1) != compare_mode) return 0; - if ( GET_MODE (true_cond) != result_mode ) + if (GET_MODE (true_cond) != result_mode) return 0; - if ( GET_MODE (false_cond) != result_mode ) + if (GET_MODE (false_cond) != result_mode) return 0; /* First, work out if the hardware can do this at all, or @@ -9039,6 +9039,17 @@ rs6000_output_function_prologue (file, size) emit_note (0, NOTE_INSN_DELETED); rs6000_emit_prologue (); emit_note (0, NOTE_INSN_DELETED); + + /* Expand INSN_ADDRESSES so final() doesn't crash. */ + { + rtx insn; + unsigned addr = 0; + for (insn = get_insns (); insn != 0; insn = NEXT_INSN (insn)) + { + INSN_ADDRESSES_NEW (insn, addr); + addr += 4; + } + } if (TARGET_DEBUG_STACK) debug_rtx_list (get_insns (), 100); @@ -9427,6 +9438,17 @@ rs6000_output_function_epilogue (file, size) rs6000_emit_epilogue (FALSE); emit_note (0, NOTE_INSN_DELETED); + /* Expand INSN_ADDRESSES so final() doesn't crash. */ + { + rtx insn; + unsigned addr = 0; + for (insn = get_insns (); insn != 0; insn = NEXT_INSN (insn)) + { + INSN_ADDRESSES_NEW (insn, addr); + addr += 4; + } + } + if (TARGET_DEBUG_STACK) debug_rtx_list (get_insns (), 100); final (get_insns (), file, FALSE, FALSE); |