diff options
author | Dimitrios Apostolou <jimis@gmx.net> | 2011-11-11 04:00:39 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-11-10 23:00:39 -0500 |
commit | 5e3929ed1b1b079f87d3bdc9342b9f05fa9cfd06 (patch) | |
tree | 048365acb120710e3f57953c76b1f455473b434d /gcc/config/i386 | |
parent | c63ee1b7f0785159d2188c2708100fc0e116f27e (diff) | |
download | gcc-5e3929ed1b1b079f87d3bdc9342b9f05fa9cfd06.tar.gz |
final.c, output.h (fprint_whex, [...]): New functions serving as fast replacements for fprintf() integer to string...
* final.c, output.h (fprint_whex, fprint_w, fprint_ul, sprint_ul):
New functions serving as fast replacements for fprintf() integer
to string conversions. They were used in the following changes.
* final.c (sprint_ul_rev): Internal helper for the above.
(output_addr_const): case CONST_INT: don't use fprintf().
* elfos.h (ASM_GENERATE_INTERNAL_LABEL): Don't use sprintf("%u"),
use sprint_ul() and stpcpy() which are much faster.
(TARGET_ASM_INTERNAL_LABEL): Define as default_elf_internal_label.
(ELF_ASCII_ESCAPES, ELF_STRING_LIMIT): Are the old ESCAPES and
STRING_LIMIT macros.
(ASM_OUTPUT_LIMITED_STRING, ASM_OUTPUT_ASCII): Macros now just
call respective functions that provide the same
functionality. Those are default_elf_asm_output_limited_string()
and default_elf_asm_output_ascii() in varasm.c.
* varasm.c: Fixed some whitespace inconsistencies.
(default_elf_asm_output_limited_string)
(default_elf_asm_output_ascii): The above macros from elfos.h are
implemented here as these functions, avoiding superfluous calls to
fprintf().
(default_elf_internal_label): Hook for
targetm.asm_out.internal_label and ASM_OUTPUT_DEBUG_LABEL.
* i386.c: Don't call fprintf("%u") but fprint_ul() instead.
* defaults.h (ASM_OUTPUT_LABEL, ASM_OUTPUT_INTERNAL_LABEL):
Expanded the macros on multiple lines for readability.
(ASM_OUTPUT_LABELREF): Have two calls to fputs() instead of one to
asm_fprintf().
* dwarf2asm.c (dw2_assemble_integer, dw2_asm_output_data)
(dw2_asm_data_uleb128, dw2_asm_delta_uleb128)
(dw2_asm_delta_sleb128): Convert fprintf() calls to the new
faster functions.
* dwarf2out.c (dwarf2out_source_line): Convert fprintf() calls to
the new faster functions.
From-SVN: r181279
Diffstat (limited to 'gcc/config/i386')
-rw-r--r-- | gcc/config/i386/i386.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 4d460daad89..f39eb116f77 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -13539,26 +13539,28 @@ print_reg (rtx x, int code, FILE *file) code = GET_MODE_SIZE (GET_MODE (x)); /* Irritatingly, AMD extended registers use different naming convention - from the normal registers. */ + from the normal registers: "r%d[bwd]" */ if (REX_INT_REG_P (x)) { gcc_assert (TARGET_64BIT); + putc ('r', file); + fprint_ul (file, REGNO (x) - FIRST_REX_INT_REG + 8); switch (code) { case 0: error ("extended registers have no high halves"); break; case 1: - fprintf (file, "r%ib", REGNO (x) - FIRST_REX_INT_REG + 8); + putc ('b', file); break; case 2: - fprintf (file, "r%iw", REGNO (x) - FIRST_REX_INT_REG + 8); + putc ('w', file); break; case 4: - fprintf (file, "r%id", REGNO (x) - FIRST_REX_INT_REG + 8); + putc ('d', file); break; case 8: - fprintf (file, "r%i", REGNO (x) - FIRST_REX_INT_REG + 8); + /* no suffix */ break; default: error ("unsupported operand size for extended register"); |