From: rth Date: Sat, 17 Apr 1999 19:15:29 +0000 (+0000) Subject: Donn Terry X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=commitdiff_plain;h=a33b3b69bf58ca46f5d1d60ffe649fb3fcd80590 Donn Terry * i386.h (PRINT_OPERAND_PUNCT_VALID_P): Allow _. * i386.c (print_operand): New %_ operator. (load_pic_register): Proper number of leading _ in GOT literal. * i386.md (prologue_get_pc_and_set_got): Likewise. * i386/unix.h (ASM_OUTPUT_MI_THUNK): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@26525 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5d81e68b222..84223a74a42 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,4 +1,12 @@ -Mon Apr 19 08:12:30 1999 Richard Henderson +Sat Apr 17 19:13:22 1999 Donn Terry + + * i386.h (PRINT_OPERAND_PUNCT_VALID_P): Allow _. + * i386.c (print_operand): New %_ operator. + (load_pic_register): Proper number of leading _ in GOT literal. + * i386.md (prologue_get_pc_and_set_got): Likewise. + * i386/unix.h (ASM_OUTPUT_MI_THUNK): Likewise. + +Sat Apr 17 19:13:07 1999 Richard Henderson * alpha.c (alpha_expand_prologue): Use gen_adddi3 instead of emit_move_insn+plus_constant. For NT, don't use the stack probe diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 843c84c8fd5..2ac07671ddf 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -1879,14 +1879,19 @@ load_pic_register (do_rtl) { emit_insn (gen_prologue_get_pc (xops[0], xops[1])); emit_insn (gen_prologue_set_got (xops[0], - gen_rtx (SYMBOL_REF, Pmode, - "$_GLOBAL_OFFSET_TABLE_"), +#ifdef YES_UNDERSCORES + gen_rtx_SYMBOL_REF (Pmode, + "$__GLOBAL_OFFSET_TABLE_"), +#else + gen_rtx_SYMBOL_REF (Pmode, + "$_GLOBAL_OFFSET_TABLE_"), +#endif xops[1])); } else { output_asm_insn (AS1 (call,%X1), xops); - output_asm_insn ("addl $_GLOBAL_OFFSET_TABLE_,%0", xops); + output_asm_insn ("addl $%__GLOBAL_OFFSET_TABLE_,%0", xops); pic_label_rtx = 0; } } @@ -1909,7 +1914,7 @@ load_pic_register (do_rtl) ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, "L", CODE_LABEL_NUMBER (xops[1])); output_asm_insn (AS1 (pop%L0,%0), xops); - output_asm_insn ("addl $_GLOBAL_OFFSET_TABLE_+[.-%P1],%0", xops); + output_asm_insn ("addl $%__GLOBAL_OFFSET_TABLE_+[.-%P1],%0", xops); } } @@ -3372,7 +3377,8 @@ put_condition_code (code, reverse_cc, mode, file) k -- likewise, print the SImode name of the register. h -- print the QImode name for a "high" register, either ah, bh, ch or dh. y -- print "st(0)" instead of "st" as a register. - P -- print as a PIC constant */ + P -- print as a PIC constant + _ -- output "_" if YES_UNDERSCORES */ void print_operand (file, x, code) @@ -3389,6 +3395,12 @@ print_operand (file, x, code) putc ('*', file); return; + case '_': +#ifdef YES_UNDERSCORES + putc ('_', file); +#endif + return; + case 'L': PUT_OP_SIZE (code, 'l', file); return; diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index a455d2d24f0..b4854714a48 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -2578,7 +2578,7 @@ do { long l; \ F,f -- likewise, but for floating-point. */ #define PRINT_OPERAND_PUNCT_VALID_P(CODE) \ - ((CODE) == '*') + ((CODE) == '*' || (CODE) == '_') /* Print the name of a register based on its machine mode and number. If CODE is 'w', pretend the mode is HImode. diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 28e35e44179..e18c592f663 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -6894,7 +6894,7 @@ byte_xor_operation: ASM_OUTPUT_INTERNAL_LABEL (asm_out_file, \"L\", CODE_LABEL_NUMBER (operands[1])); output_asm_insn (AS1 (pop%L0,%0), operands); - output_asm_insn (\"addl $_GLOBAL_OFFSET_TABLE_+[.-%X1],%0\", operands); + output_asm_insn (\"addl $%__GLOBAL_OFFSET_TABLE_+[.-%X1],%0\", operands); RET; }" [(set_attr "memory" "none")]) diff --git a/gcc/config/i386/unix.h b/gcc/config/i386/unix.h index 3ff2075cfaf..771d802b409 100644 --- a/gcc/config/i386/unix.h +++ b/gcc/config/i386/unix.h @@ -176,7 +176,7 @@ do { \ output_asm_insn (AS1 (call,%P1), xops); \ ASM_OUTPUT_INTERNAL_LABEL (FILE, "L", CODE_LABEL_NUMBER (xops[1])); \ output_asm_insn (AS1 (pop%L0,%0), xops); \ - output_asm_insn ("addl $_GLOBAL_OFFSET_TABLE_+[.-%P1],%0", xops); \ + output_asm_insn ("addl $%__GLOBAL_OFFSET_TABLE_+[.-%P1],%0", xops); \ fprintf (FILE, "\tmovl "); \ assemble_name (FILE, XSTR (XEXP (DECL_RTL (FUNCTION), 0), 0)); \ fprintf (FILE, "@GOT(%%ebx),%%ecx\n\tpopl %%ebx\n\tjmp *%%ecx\n"); \