diff options
author | Eric Botcazou <ebotcazou@libertysurf.fr> | 2004-09-04 00:23:32 +0200 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2004-09-03 22:23:32 +0000 |
commit | ca83de6b3332b3647bfd4bda0b88e5ed258e81f9 (patch) | |
tree | 3f96cb5eb38eda11441400b36fe548ce0ee364c2 /gcc/final.c | |
parent | 37e6d6fe839adecbfc5ffeeeb32bd230a3701550 (diff) | |
download | gcc-ca83de6b3332b3647bfd4bda0b88e5ed258e81f9.zip gcc-ca83de6b3332b3647bfd4bda0b88e5ed258e81f9.tar.gz gcc-ca83de6b3332b3647bfd4bda0b88e5ed258e81f9.tar.bz2 |
final.c (output_in_slot): New global variable.
* final.c (output_in_slot): New global variable.
(final_scan_insn): Add new state '2' to the 'nopeepholes' parameter.
Pass 2 as 'nopeepholes' to self for insns in a SEQUENCE. Set
'output_in_slot' before invoking output_asm_insn.
(output_asm_insn): Add a space after the tab if 'output_in_slot'
is set.
* config/sparc/sparc.c (output_return): Pass 2 as 'nopeepholes' to
final_scan_insn.
(output_sibcall): Likewise.
From-SVN: r87056
Diffstat (limited to 'gcc/final.c')
-rw-r--r-- | gcc/final.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/gcc/final.c b/gcc/final.c index fe4eaa6..e1c0148 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -200,6 +200,10 @@ static int app_on; rtx final_sequence; +/* True if we are outputting insns in a delay slot. This is used + to prettify the assembly. */ +static bool output_in_slot; + #ifdef ASSEMBLER_DIALECT /* Number of the assembler dialect to use, starting at 0. */ @@ -1663,8 +1667,11 @@ scan_ahead_for_unlikely_executed_note (rtx insn) is the insn being scanned. Value returned is the next insn to be scanned. - NOPEEPHOLES is the flag to disallow peephole processing (currently - used for within delayed branch sequence output). + NOPEEPHOLES is used to disallow peephole processing: + - 0: peepholes are allowed, + - 1: peepholes are not allowed, + - 2: peepholes are not allowed and we are in the + slot of a delayed branch. SEEN is used to track the end of the prologue, for emitting debug information. We force the emission of a line note after @@ -1674,8 +1681,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 prescan, int nopeepholes, int *seen) { #ifdef HAVE_cc0 rtx set; @@ -2195,7 +2201,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, prescan, 2, seen); while (insn != next); } #ifdef DBR_OUTPUT_SEQEND @@ -2527,7 +2533,9 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED, #endif /* Output assembler code from the template. */ + output_in_slot = (nopeepholes > 1); output_asm_insn (template, recog_data.operand); + output_in_slot = false; /* If necessary, report the effect that the instruction has on the unwind info. We've already done this for delay slots @@ -2988,6 +2996,8 @@ output_asm_insn (const char *template, rtx *operands) memset (opoutput, 0, sizeof opoutput); p = template; putc ('\t', asm_out_file); + if (output_in_slot) + putc (' ', asm_out_file); #ifdef ASM_OUTPUT_OPCODE ASM_OUTPUT_OPCODE (asm_out_file, p); |