aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2002-04-16 21:56:09 +0000
committerDavid Edelsohn <dje@gcc.gnu.org>2002-04-16 17:56:09 -0400
commit178c3eff52cd705a16548be4ff8878cc2f1a8e3b (patch)
treeeb032992e2a8b3df8b807ef7eaee71a9dc4e654e
parent7d6f6369938e8ce41d3d748da8c7b6ce663ccd4a (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/rs6000/rs6000.c28
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);