From 178c3eff52cd705a16548be4ff8878cc2f1a8e3b Mon Sep 17 00:00:00 2001 From: Dale Johannesen Date: Tue, 16 Apr 2002 21:56:09 +0000 Subject: rs6000.c (rs6000_output_function_prologue): Compute instruction addresses. 2002-04-16 Dale Johannesen * config/rs6000/rs6000.c (rs6000_output_function_prologue): Compute instruction addresses. (rs6000_output_function_epilogue): Likewise. From-SVN: r52378 --- gcc/ChangeLog | 6 ++++++ gcc/config/rs6000/rs6000.c | 28 +++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 3 deletions(-) (limited to 'gcc') 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 + + * config/rs6000/rs6000.c (rs6000_output_function_prologue): Compute + instruction addresses. + (rs6000_output_function_epilogue): Likewise. + 2002-04-16 Paolo Carlini * 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); -- cgit v1.1