aboutsummaryrefslogtreecommitdiff
path: root/gcc/final.c
diff options
context:
space:
mode:
authorJim Wilson <wilson@redhat.com>2001-03-27 23:15:04 +0000
committerJim Wilson <wilson@gcc.gnu.org>2001-03-27 15:15:04 -0800
commitad0fc6987804eb16dccee061dc63fdd6ca07be48 (patch)
tree532d2ee7bd30f32f7fe080f207dfdccba9120355 /gcc/final.c
parent911e61070f7b39ca392345444b1f91411aad3925 (diff)
downloadgcc-ad0fc6987804eb16dccee061dc63fdd6ca07be48.zip
gcc-ad0fc6987804eb16dccee061dc63fdd6ca07be48.tar.gz
gcc-ad0fc6987804eb16dccee061dc63fdd6ca07be48.tar.bz2
Fix ia64-linux kernel miscompile, bad unwind info when reorder epilogue block.
* final.c (final_scan_insn, case NOTE_INSN_BASIC_BLOCK): Call IA64_UNWIND_EMIT. * config/ia64/ia64.c (block_num, need_copy_state): New static vars. (process_epilogue): New static function. (process_set): Call process_epilogue instead of emitting .restore directly. (process_for_unwind_directive): Handle NOTE_INSN_BASIC_BLOCK. From-SVN: r40885
Diffstat (limited to 'gcc/final.c')
-rw-r--r--gcc/final.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/final.c b/gcc/final.c
index 402ff8c..cdc2de4 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -2117,6 +2117,9 @@ final_scan_insn (insn, file, optimize, prescan, nopeepholes)
break;
case NOTE_INSN_BASIC_BLOCK:
+#ifdef IA64_UNWIND_INFO
+ IA64_UNWIND_EMIT (asm_out_file, insn);
+#endif
if (flag_debug_asm)
fprintf (asm_out_file, "\t%s basic block %d\n",
ASM_COMMENT_START, NOTE_BASIC_BLOCK (insn)->index);