diff options
author | Jim Wilson <wilson@redhat.com> | 2001-03-27 23:15:04 +0000 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 2001-03-27 15:15:04 -0800 |
commit | ad0fc6987804eb16dccee061dc63fdd6ca07be48 (patch) | |
tree | 532d2ee7bd30f32f7fe080f207dfdccba9120355 /gcc/final.c | |
parent | 911e61070f7b39ca392345444b1f91411aad3925 (diff) | |
download | gcc-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.c | 3 |
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); |