diff options
author | Richard Henderson <rth@gcc.gnu.org> | 2010-09-07 10:25:11 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2010-09-07 10:25:11 -0700 |
commit | 3bc6b3e6fc40559519e7078c3f549d0e87bdf8be (patch) | |
tree | 7e57ac89de2bf5bd7f6fbbe53ca3236920a648e3 /gcc | |
parent | aa2298043c59f24bfea30f1c8f2207d0caf6e28b (diff) | |
download | gcc-3bc6b3e6fc40559519e7078c3f549d0e87bdf8be.zip gcc-3bc6b3e6fc40559519e7078c3f549d0e87bdf8be.tar.gz gcc-3bc6b3e6fc40559519e7078c3f549d0e87bdf8be.tar.bz2 |
Define target hook TARGET_UNWIND_EMIT_BEFORE_INSN.
From-SVN: r163961
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/doc/tm.texi | 4 | ||||
-rw-r--r-- | gcc/doc/tm.texi.in | 2 | ||||
-rw-r--r-- | gcc/final.c | 7 | ||||
-rw-r--r-- | gcc/target.def | 7 |
5 files changed, 28 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 746b3fb..f544f73 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2010-09-07 Richard Henderson <rth@redhat.com> + + * target.def (unwind_emit_before_insn): New hook. + * doc/tm.texi.in: Add @hook marker for it. + * doc/tm.texi: Rebuild. + * final.c (final_scan_insn): Respect unwind_emit_before_insn. + 2010-09-07 Martin Jambor <mjambor@suse.cz> PR fortran/43665 @@ -6,8 +13,8 @@ 2010-09-07 Jan Hubicka <jh@suse.cz> - * tree-ssa-ccp.c (fold_const_aggregate_ref): Fix handling of array_ref_low_bound - in string access folding. + * tree-ssa-ccp.c (fold_const_aggregate_ref): Fix handling of + array_ref_low_bound in string access folding. 2010-09-07 Uros Bizjak <ubizjak@gmail.com> diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 5954ea3..a8db902 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -8749,6 +8749,10 @@ This target hook emits assembly directives required to unwind the given instruction. This is only used when TARGET_UNWIND_INFO is set. @end deftypefn +@deftypevr {Target Hook} bool TARGET_ASM_UNWIND_EMIT_BEFORE_INSN +True if the @code{TARGET_ASM_UNWIND_EMIT} hook should be called before the assembly for @var{insn} has been emitted, false if the hook should be called afterward. +@end deftypevr + @node Exception Region Output @subsection Assembler Commands for Exception Regions diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in index 24f5c1b3..2efc1ae 100644 --- a/gcc/doc/tm.texi.in +++ b/gcc/doc/tm.texi.in @@ -8739,6 +8739,8 @@ This target hook emits assembly directives required to unwind the given instruction. This is only used when TARGET_UNWIND_INFO is set. @end deftypefn +@hook TARGET_ASM_UNWIND_EMIT_BEFORE_INSN + @node Exception Region Output @subsection Assembler Commands for Exception Regions diff --git a/gcc/final.c b/gcc/final.c index 73c6069..06ebc17 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -2655,7 +2655,8 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, /* ??? 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. */ - if (targetm.asm_out.unwind_emit) + if (targetm.asm_out.unwind_emit_before_insn + && targetm.asm_out.unwind_emit) targetm.asm_out.unwind_emit (asm_out_file, insn); if (CALL_P (insn)) @@ -2713,6 +2714,10 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, dwarf2out_frame_debug (insn, true); #endif + if (!targetm.asm_out.unwind_emit_before_insn + && targetm.asm_out.unwind_emit) + targetm.asm_out.unwind_emit (asm_out_file, insn); + current_output_insn = debug_insn = 0; } } diff --git a/gcc/target.def b/gcc/target.def index f11328b..e62a977 100644 --- a/gcc/target.def +++ b/gcc/target.def @@ -152,6 +152,13 @@ DEFHOOK void, (FILE *stream, rtx insn), NULL) +DEFHOOKPOD +(unwind_emit_before_insn, + "True if the @code{TARGET_ASM_UNWIND_EMIT} hook should be called before\ + the assembly for @var{insn} has been emitted, false if the hook should\ + be called afterward.", + bool, true) + /* Output an internal label. */ DEFHOOK (internal_label, |