diff options
author | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-11 16:03:03 +0000 |
---|---|---|
committer | bstarynk <bstarynk@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-07-11 16:03:03 +0000 |
commit | 3bc27e2679214e7ebf931b6526e8d730302bea02 (patch) | |
tree | 464194ba44e3e419e94749e114cb365402e0577e /gcc/final.c | |
parent | 8f78e2d345b9c738fc24ec158dc4f20016a58b5c (diff) | |
download | gcc-3bc27e2679214e7ebf931b6526e8d730302bea02.tar.gz |
2011-07-11 Basile Starynkevitch <basile@starynkevitch.net>
MELT branch merged with trunk rev 176158 using svnmerge.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/melt-branch@176161 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/final.c')
-rw-r--r-- | gcc/final.c | 64 |
1 files changed, 20 insertions, 44 deletions
diff --git a/gcc/final.c b/gcc/final.c index c0c1fc850ec..3416955d7ee 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -106,11 +106,6 @@ along with GCC; see the file COPYING3. If not see #define CC_STATUS_INIT #endif -/* How to start an assembler comment. */ -#ifndef ASM_COMMENT_START -#define ASM_COMMENT_START ";#" -#endif - /* Is the given character a logical line separator for the assembler? */ #ifndef IS_ASM_LOGICAL_LINE_SEPARATOR #define IS_ASM_LOGICAL_LINE_SEPARATOR(C, STR) ((C) == ';') @@ -1560,11 +1555,6 @@ final_start_function (rtx first ATTRIBUTE_UNUSED, FILE *file, if (targetm.profile_before_prologue () && crtl->profile) profile_function (file); -#if defined (HAVE_prologue) - if (dwarf2out_do_frame ()) - dwarf2out_frame_debug_init (); -#endif - /* If debugging, assign block numbers to all of the blocks in this function. */ if (write_symbols) @@ -1727,7 +1717,7 @@ dump_basic_block_info (FILE *file, rtx insn, basic_block *start_to_bb, void final (rtx first, FILE *file, int optimize_p) { - rtx insn; + rtx insn, next; int max_uid = 0; int seen = 0; @@ -1801,6 +1791,16 @@ final (rtx first, FILE *file, int optimize_p) free (start_to_bb); free (end_to_bb); } + + /* Remove CFI notes, to avoid compare-debug failures. */ + for (insn = first; insn; insn = next) + { + next = NEXT_INSN (insn); + if (NOTE_P (insn) + && (NOTE_KIND (insn) == NOTE_INSN_CFI + || NOTE_KIND (insn) == NOTE_INSN_CFI_LABEL)) + delete_insn (insn); + } } const char * @@ -1973,16 +1973,20 @@ final_scan_insn (rtx insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, break; case NOTE_INSN_EPILOGUE_BEG: -#if defined (HAVE_epilogue) - if (dwarf2out_do_frame ()) - dwarf2out_cfi_begin_epilogue (insn); -#endif (*debug_hooks->begin_epilogue) (last_linenum, last_filename); targetm.asm_out.function_begin_epilogue (file); break; case NOTE_INSN_CFA_RESTORE_STATE: - dwarf2out_frame_debug_restore_state (); + break; + + case NOTE_INSN_CFI: + dwarf2out_emit_cfi (NOTE_CFI (insn)); + break; + + case NOTE_INSN_CFI_LABEL: + ASM_OUTPUT_DEBUG_LABEL (asm_out_file, "LCFI", + NOTE_LABEL_NUMBER (insn)); break; case NOTE_INSN_FUNCTION_BEG: @@ -2092,8 +2096,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, break; case BARRIER: - if (dwarf2out_do_frame ()) - dwarf2out_frame_debug (insn, false); break; case CODE_LABEL: @@ -2314,11 +2316,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, location_t loc; expanded_location expanded; - /* Make sure we flush any queued register saves in case this - clobbers affected registers. */ - if (dwarf2out_do_frame ()) - dwarf2out_frame_debug (insn, false); - /* There's no telling what that did to the condition codes. */ CC_STATUS_INIT; @@ -2364,12 +2361,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, final_sequence = body; - /* Record the delay slots' frame information before the branch. - This is needed for delayed calls: see execute_cfa_program(). */ - if (dwarf2out_do_frame ()) - for (i = 1; i < XVECLEN (body, 0); i++) - dwarf2out_frame_debug (XVECEXP (body, 0, i), false); - /* The first insn in this SEQUENCE might be a JUMP_INSN that will force the restoration of a comparison that was previously thought unnecessary. If that happens, cancel this sequence @@ -2683,11 +2674,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, current_output_insn = debug_insn = insn; - if (dwarf2out_do_frame () - && (CALL_P (insn) - || find_reg_note (insn, REG_CFA_FLUSH_QUEUE, NULL))) - dwarf2out_frame_debug (insn, false); - /* Find the proper template for this insn. */ templ = get_insn_template (insn_code_number, insn); @@ -2767,16 +2753,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize_p ATTRIBUTE_UNUSED, targetm.asm_out.final_postscan_insn (file, insn, recog_data.operand, recog_data.n_operands); - /* If necessary, report the effect that the instruction has on - the unwind info. We've already done this for delay slots - and call instructions. */ - if (final_sequence == 0 -#if !defined (HAVE_prologue) - && !ACCUMULATE_OUTGOING_ARGS -#endif - && dwarf2out_do_frame ()) - dwarf2out_frame_debug (insn, true); - if (!targetm.asm_out.unwind_emit_before_insn && targetm.asm_out.unwind_emit) targetm.asm_out.unwind_emit (asm_out_file, insn); |