aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@gcc.gnu.org>1999-04-17 12:15:29 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-04-17 12:15:29 -0700
commitd119f84ce709de6c2027065de97d2dd13ca57444 (patch)
treee8d8c6451f48fe403cdbcb79a91294ec64ea832e
parentf9d7e5cd9ecc1a22a4765dee9dbdd695b42c9c3a (diff)
downloadgcc-d119f84ce709de6c2027065de97d2dd13ca57444.zip
gcc-d119f84ce709de6c2027065de97d2dd13ca57444.tar.gz
gcc-d119f84ce709de6c2027065de97d2dd13ca57444.tar.bz2
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
-rw-r--r--gcc/ChangeLog10
-rw-r--r--gcc/config/i386/i386.c22
-rw-r--r--gcc/config/i386/i386.h2
-rw-r--r--gcc/config/i386/i386.md2
-rw-r--r--gcc/config/i386/unix.h2
5 files changed, 29 insertions, 9 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5d81e68..84223a7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 843c84c..2ac0767 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 a455d2d..b485471 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 28e35e4..e18c592 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 3ff2075..771d802 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"); \