diff options
| -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); |
