diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.c | 2 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.c | 2 | ||||
-rw-r--r-- | gcc/config/mips/mips.c | 6 | ||||
-rw-r--r-- | gcc/config/pa/pa.c | 6 | ||||
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 6 | ||||
-rw-r--r-- | gcc/config/sh/sh.c | 4 | ||||
-rw-r--r-- | gcc/config/sparc/sparc.c | 2 | ||||
-rw-r--r-- | gcc/final.c | 59 | ||||
-rw-r--r-- | gcc/output.h | 4 | ||||
-rw-r--r-- | gcc/passes.c | 2 |
11 files changed, 32 insertions, 66 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8591b39..0e5dea3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-03-30 Ian Lance Taylor <ian@airs.com> + + * final.c (final): Remove prescan parameter. Change all callers. + (final_scan_insn): Remove prescan parameter. Change all callers. + 2005-03-30 Kazu Hirata <kazu@cs.umass.edu> * tree-vectorizer.c: Fix comment typos. diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 67575e6..75e4513 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -7911,7 +7911,7 @@ alpha_output_mi_thunk_osf (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, insn_locators_initialize (); shorten_branches (insn); final_start_function (insn, file, 1); - final (insn, file, 1, 0); + final (insn, file, 1); final_end_function (); } #endif /* TARGET_ABI_OSF */ diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 0f9645a..e18b348 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -8818,7 +8818,7 @@ ia64_output_mi_thunk (FILE *file, tree thunk ATTRIBUTE_UNUSED, insn = get_insns (); shorten_branches (insn); final_start_function (insn, file, 1); - final (insn, file, 1, 0); + final (insn, file, 1); final_end_function (); reload_completed = 0; diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c index 594d5c1..30b14c5 100644 --- a/gcc/config/mips/mips.c +++ b/gcc/config/mips/mips.c @@ -6719,7 +6719,7 @@ mips_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, mips16_lay_out_constants (); shorten_branches (insn); final_start_function (insn, file, 1); - final (insn, file, 1, 0); + final (insn, file, 1); final_end_function (); /* Clean up the vars set above. Note that final_end_function resets @@ -8983,7 +8983,7 @@ mips_output_conditional_branch (rtx insn, rtx *operands, int two_operands_p, /* Output delay slot instruction. */ rtx insn = final_sequence; final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file, - optimize, 0, 1, NULL); + optimize, 1, NULL); INSN_DELETED_P (XVECEXP (insn, 0, 1)) = 1; } else @@ -9002,7 +9002,7 @@ mips_output_conditional_branch (rtx insn, rtx *operands, int two_operands_p, /* Output delay slot instruction. */ rtx insn = final_sequence; final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file, - optimize, 0, 1, NULL); + optimize, 1, NULL); INSN_DELETED_P (XVECEXP (insn, 0, 1)) = 1; } else diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 70484c2..ad6594f 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -6044,7 +6044,7 @@ output_lbranch (rtx dest, rtx insn) abort (); final_scan_insn (NEXT_INSN (insn), asm_out_file, - optimize, 0, 0, NULL); + optimize, 0, NULL); /* Now delete the delay insn. */ PUT_CODE (NEXT_INSN (insn), NOTE); @@ -7048,7 +7048,7 @@ output_call (rtx insn, rtx call_dest, int sibcall) && !sibcall) { final_scan_insn (NEXT_INSN (insn), asm_out_file, - optimize, 0, 0, NULL); + optimize, 0, NULL); /* Now delete the delay insn. */ PUT_CODE (NEXT_INSN (insn), NOTE); @@ -7096,7 +7096,7 @@ output_call (rtx insn, rtx call_dest, int sibcall) /* A non-jump insn in the delay slot. By definition we can emit this insn before the call (and in fact before argument relocating. */ - final_scan_insn (NEXT_INSN (insn), asm_out_file, optimize, 0, 0, + final_scan_insn (NEXT_INSN (insn), asm_out_file, optimize, 0, NULL); /* Now delete the delay insn. */ diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 831b8c2..ffb2167 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -13210,7 +13210,7 @@ rs6000_output_function_prologue (FILE *file, if (TARGET_DEBUG_STACK) debug_rtx_list (get_insns (), 100); - final (get_insns (), file, FALSE, FALSE); + final (get_insns (), file, FALSE); end_sequence (); } @@ -13740,7 +13740,7 @@ rs6000_output_function_epilogue (FILE *file, if (TARGET_DEBUG_STACK) debug_rtx_list (get_insns (), 100); - final (get_insns (), file, FALSE, FALSE); + final (get_insns (), file, FALSE); end_sequence (); } } @@ -14110,7 +14110,7 @@ rs6000_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, insn_locators_initialize (); shorten_branches (insn); final_start_function (insn, file, 1); - final (insn, file, 1, 0); + final (insn, file, 1); final_end_function (); reload_completed = 0; diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 9587b53..8991c8e 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -1278,7 +1278,7 @@ output_movedouble (rtx insn ATTRIBUTE_UNUSED, rtx operands[], static void print_slot (rtx insn) { - final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file, optimize, 0, 1, NULL); + final_scan_insn (XVECEXP (insn, 0, 1), asm_out_file, optimize, 1, NULL); INSN_DELETED_P (XVECEXP (insn, 0, 1)) = 1; } @@ -9869,7 +9869,7 @@ sh_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, dbr_schedule (insns, dump_file); shorten_branches (insns); final_start_function (insns, file, 1); - final (insns, file, 1, 0); + final (insns, file, 1); final_end_function (); if (optimize > 0 && flag_schedule_insns_after_reload) diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c index 1d791cc..3827d7b 100644 --- a/gcc/config/sparc/sparc.c +++ b/gcc/config/sparc/sparc.c @@ -9115,7 +9115,7 @@ sparc_output_mi_thunk (FILE *file, tree thunk_fndecl ATTRIBUTE_UNUSED, insn_locators_initialize (); shorten_branches (insn); final_start_function (insn, file, 1); - final (insn, file, 1, 0); + final (insn, file, 1); final_end_function (); reload_completed = 0; diff --git a/gcc/final.c b/gcc/final.c index 906e50c..7f5c664 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -1491,18 +1491,10 @@ final_end_function (void) } /* Output assembler code for some insns: all or part of a function. - For description of args, see `final_start_function', above. - - PRESCAN is 1 if we are not really outputting, - just scanning as if we were outputting. - Prescanning deletes and rearranges insns just like ordinary output. - PRESCAN is -2 if we are outputting after having prescanned. - In this case, don't try to delete or rearrange insns - because that has already been done. - Prescanning is done only on certain machines. */ + For description of args, see `final_start_function', above. */ void -final (rtx first, FILE *file, int optimize, int prescan) +final (rtx first, FILE *file, int optimize) { rtx insn; int max_uid = 0; @@ -1574,7 +1566,7 @@ final (rtx first, FILE *file, int optimize, int prescan) insn_current_address = INSN_ADDRESSES (INSN_UID (insn)); #endif /* HAVE_ATTR_length */ - insn = final_scan_insn (insn, file, optimize, prescan, 0, &seen); + insn = final_scan_insn (insn, file, optimize, 0, &seen); } } @@ -1672,8 +1664,7 @@ scan_ahead_for_unlikely_executed_note (rtx insn) rtx final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, - int prescan, int nopeepholes ATTRIBUTE_UNUSED, - int *seen) + int nopeepholes ATTRIBUTE_UNUSED, int *seen) { #ifdef HAVE_cc0 rtx set; @@ -1690,9 +1681,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, switch (GET_CODE (insn)) { case NOTE: - if (prescan > 0) - break; - switch (NOTE_LINE_NUMBER (insn)) { case NOTE_INSN_DELETED: @@ -1904,8 +1892,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, } } #endif - if (prescan > 0) - break; if (LABEL_NAME (insn)) (*debug_hooks->label) (insn); @@ -2022,9 +2008,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, int vlen, idx; #endif - if (prescan > 0) - break; - if (! JUMP_TABLES_IN_TEXT_SECTION) targetm.asm_out.function_rodata_section (current_function_decl); else @@ -2103,8 +2086,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, /* There's no telling what that did to the condition codes. */ CC_STATUS_INIT; - if (prescan > 0) - break; if (string[0]) { @@ -2127,8 +2108,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, /* There's no telling what that did to the condition codes. */ CC_STATUS_INIT; - if (prescan > 0) - break; /* Get out the operand values. */ string = decode_asm_operands (body, ops, NULL, NULL, NULL); @@ -2155,7 +2134,7 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, break; } - if (prescan <= 0 && app_on) + if (app_on) { fputs (ASM_APP_OFF, file); app_on = 0; @@ -2166,8 +2145,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, /* A delayed-branch sequence */ int i; - if (prescan > 0) - break; final_sequence = body; /* Record the delay slots' frame information before the branch. @@ -2183,7 +2160,7 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, thought unnecessary. If that happens, cancel this sequence and cause that insn to be restored. */ - next = final_scan_insn (XVECEXP (body, 0, 0), file, 0, prescan, 1, seen); + next = final_scan_insn (XVECEXP (body, 0, 0), file, 0, 1, seen); if (next != XVECEXP (body, 0, 1)) { final_sequence = 0; @@ -2197,7 +2174,7 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, /* We loop in case any instruction in a delay slot gets split. */ do - insn = final_scan_insn (insn, file, 0, prescan, 1, seen); + insn = final_scan_insn (insn, file, 0, 1, seen); while (insn != next); } #ifdef DBR_OUTPUT_SEQEND @@ -2280,10 +2257,7 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, && SET_DEST (body) == pc_rtx && GET_CODE (SET_SRC (body)) == IF_THEN_ELSE && COMPARISON_P (XEXP (SET_SRC (body), 0)) - && XEXP (XEXP (SET_SRC (body), 0), 0) == cc0_rtx - /* This is done during prescan; it is not done again - in final scan when prescan has been done. */ - && prescan >= 0) + && XEXP (XEXP (SET_SRC (body), 0), 0) == cc0_rtx) { /* This function may alter the contents of its argument and clear some of the cc_status.flags bits. @@ -2383,21 +2357,11 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, emit them before the peephole. */ if (next != 0 && next != NEXT_INSN (insn)) { - rtx note, prev = PREV_INSN (insn); + rtx note; for (note = NEXT_INSN (insn); note != next; note = NEXT_INSN (note)) - final_scan_insn (note, file, optimize, prescan, nopeepholes, seen); - - /* In case this is prescan, put the notes - in proper position for later rescan. */ - note = NEXT_INSN (insn); - PREV_INSN (note) = prev; - NEXT_INSN (prev) = note; - NEXT_INSN (PREV_INSN (next)) = insn; - PREV_INSN (insn) = PREV_INSN (next); - NEXT_INSN (insn) = next; - PREV_INSN (next) = insn; + final_scan_insn (note, file, optimize, nopeepholes, seen); } /* PEEPHOLE might have changed this. */ @@ -2503,9 +2467,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, return new; } - if (prescan > 0) - break; - #ifdef TARGET_UNWIND_INFO /* ??? This will put the directives in the wrong place if get_insn_template outputs assembly directly. However calling it diff --git a/gcc/output.h b/gcc/output.h index 8301788..dbc2d47 100644 --- a/gcc/output.h +++ b/gcc/output.h @@ -66,12 +66,12 @@ extern void final_start_function (rtx, FILE *, int); extern void final_end_function (void); /* Output assembler code for some insns: all or part of a function. */ -extern void final (rtx, FILE *, int, int); +extern void final (rtx, FILE *, int); /* The final scan for one insn, INSN. Args are same as in `final', except that INSN is the insn being scanned. Value returned is the next insn to be scanned. */ -extern rtx final_scan_insn (rtx, FILE *, int, int, int, int *); +extern rtx final_scan_insn (rtx, FILE *, int, int, int *); /* Replace a SUBREG with a REG or a MEM, based on the thing it is a subreg of. */ diff --git a/gcc/passes.c b/gcc/passes.c index 1121d0c..17e42c4 100644 --- a/gcc/passes.c +++ b/gcc/passes.c @@ -294,7 +294,7 @@ rest_of_handle_final (void) assemble_start_function (current_function_decl, fnname); final_start_function (get_insns (), asm_out_file, optimize); - final (get_insns (), asm_out_file, optimize, 0); + final (get_insns (), asm_out_file, optimize); final_end_function (); #ifdef TARGET_UNWIND_INFO |