aboutsummaryrefslogtreecommitdiff
path: root/gcc/final.c
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2004-07-15 01:07:53 +0000
committerPaul Brook <paul@codesourcery.com>2004-07-15 01:07:53 +0000
commitbc1c60156c860195b2ea90738f8e301397533a67 (patch)
treee24df3cf9d27a024b85f7ea213204bbe313c63a0 /gcc/final.c
parent0e36b22269159450d4240f41ff23573049bd2858 (diff)
* dwarf2out.c (dwarf2out_begin_prologue): Rename IA64_UNWIND_INFO
to TARGET_UNWIND_INFO. * except.c (output_function_exception_table): Ditto. * except.h: Ditto. * opts.c (decode_options): Ditto. * passes.c (rest_of_handle_final): Ditto. * final.c (final_start_function): Ditto. (final_scan_insn, final_scan_insn): Replace IA64_UNWIND_EMIT with target hook. * targhooks.h (default_unwind_emit): Declare. * targhooks.c (default_unwind_emit): New function. * target-def.h: Define and use TARGET_UNWIND_EMIT. * target.h (struct gcc_target): Add unwind_emit. * config/ia64/ia64.c (TARGET_UNWIND_EMIT): Define. * config/ia64/ia64.h: Rename IA64_UNWIND_INFO to TARGET_UNWIND_INFO. Remove IA64_UNWIND_EMIT. * doc/tm.texi: Document TARGET_UNWIND_EMIT and TARGET_UNWIND_INFO. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@84734 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/final.c')
-rw-r--r--gcc/final.c16
1 files changed, 10 insertions, 6 deletions
diff --git a/gcc/final.c b/gcc/final.c
index 412d0faae7f..fccb8464526 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -1347,7 +1347,7 @@ final_start_function (rtx first ATTRIBUTE_UNUSED, FILE *file,
(*debug_hooks->begin_prologue) (last_linenum, last_filename);
-#if defined (DWARF2_UNWIND_INFO) || defined (IA64_UNWIND_INFO)
+#if defined (DWARF2_UNWIND_INFO) || defined (TARGET_UNWIND_INFO)
if (write_symbols != DWARF2_DEBUG && write_symbols != VMS_AND_DWARF2_DEBUG)
dwarf2out_begin_prologue (0, NULL);
#endif
@@ -1732,9 +1732,10 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
&& !scan_ahead_for_unlikely_executed_note (insn))
text_section ();
-#ifdef IA64_UNWIND_INFO
- IA64_UNWIND_EMIT (asm_out_file, insn);
+#ifdef TARGET_UNWIND_INFO
+ targetm.asm_out.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);
@@ -2525,11 +2526,14 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
if (prescan > 0)
break;
-#ifdef IA64_UNWIND_INFO
- IA64_UNWIND_EMIT (asm_out_file, insn);
+#ifdef TARGET_UNWIND_INFO
+ /* ??? This will put the directives in the wrong place if
+ get_insn_template outputs assembly directly. However calling it
+ before get_insn_template breaks if the insns is split. */
+ targetm.asm_out.unwind_emit (asm_out_file, insn);
#endif
- /* Output assembler code from the template. */
+ /* Output assembler code from the template. */
output_asm_insn (template, recog_data.operand);
/* If necessary, report the effect that the instruction has on