mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-02-04 01:30:02 +08:00
Donn Terry <donn@interix.com>
Donn Terry <donn@interix.com> * 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. From-SVN: r26525
This commit is contained in:
parent
f9d7e5cd9e
commit
d119f84ce7
@ -1,4 +1,12 @@
|
||||
Mon Apr 19 08:12:30 1999 Richard Henderson <rth@cygnus.com>
|
||||
Sat Apr 17 19:13:22 1999 Donn Terry <donn@interix.com>
|
||||
|
||||
* 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 <rth@cygnus.com>
|
||||
|
||||
* alpha.c (alpha_expand_prologue): Use gen_adddi3 instead of
|
||||
emit_move_insn+plus_constant. For NT, don't use the stack probe
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -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")])
|
||||
|
@ -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"); \
|
||||
|
Loading…
Reference in New Issue
Block a user