diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-28 20:44:58 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-09-28 20:44:58 +0000 |
commit | cc7d6aed6b7186313ada1a58107b9dbcaac2f435 (patch) | |
tree | abc0f2fe4784df2eb251f4c04a0493fec3eac91d /gcc/except.c | |
parent | a336eb4b5042c9ebc2d044d29202649fd9fa2759 (diff) | |
download | gcc-cc7d6aed6b7186313ada1a58107b9dbcaac2f435.tar.gz |
Hookize TARGET_UNWIND_INFO et al.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164701 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/except.c')
-rw-r--r-- | gcc/except.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/gcc/except.c b/gcc/except.c index bfffa447d9c..5ee9ba3ca48 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -209,7 +209,7 @@ init_eh (void) /* Create the SjLj_Function_Context structure. This should match the definition in unwind-sjlj.c. */ - if (USING_SJLJ_EXCEPTIONS) + if (targetm.except_unwind_info () == UI_SJLJ) { tree f_jbuf, f_per, f_lsda, f_prev, f_cs, f_data, tmp; @@ -1375,13 +1375,13 @@ finish_eh_generation (void) basic_block bb; /* Construct the landing pads. */ - if (USING_SJLJ_EXCEPTIONS) + if (targetm.except_unwind_info () == UI_SJLJ) sjlj_build_landing_pads (); else dw2_build_landing_pads (); break_superblocks (); - if (USING_SJLJ_EXCEPTIONS + if (targetm.except_unwind_info () == UI_SJLJ /* Kludge for Alpha/Tru64 (see alpha_gp_save_rtx). */ || single_succ_edge (ENTRY_BLOCK_PTR)->insns.r) commit_edge_insertions (); @@ -2620,7 +2620,11 @@ static bool gate_convert_to_eh_region_ranges (void) { /* Nothing to do for SJLJ exceptions or if no regions created. */ - return !(USING_SJLJ_EXCEPTIONS || cfun->eh->region_tree == NULL); + if (cfun->eh->region_tree == NULL) + return false; + if (targetm.except_unwind_info () == UI_SJLJ) + return false; + return true; } struct rtl_opt_pass pass_convert_to_eh_region_ranges = @@ -2957,7 +2961,7 @@ output_one_function_exception_table (int section) eh_data_format_name (tt_format)); #ifndef HAVE_AS_LEB128 - if (USING_SJLJ_EXCEPTIONS) + if (targetm.except_unwind_info () == UI_SJLJ) call_site_len = sjlj_size_of_call_site_table (); else call_site_len = dw2_size_of_call_site_table (section); @@ -3024,14 +3028,14 @@ output_one_function_exception_table (int section) dw2_asm_output_delta_uleb128 (cs_end_label, cs_after_size_label, "Call-site table length"); ASM_OUTPUT_LABEL (asm_out_file, cs_after_size_label); - if (USING_SJLJ_EXCEPTIONS) + if (targetm.except_unwind_info () == UI_SJLJ) sjlj_output_call_site_table (); else dw2_output_call_site_table (cs_format, section); ASM_OUTPUT_LABEL (asm_out_file, cs_end_label); #else dw2_asm_output_data_uleb128 (call_site_len, "Call-site table length"); - if (USING_SJLJ_EXCEPTIONS) + if (targetm.except_unwind_info () == UI_SJLJ) sjlj_output_call_site_table (); else dw2_output_call_site_table (cs_format, section); |