aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-10-24 15:36:25 -0700
committerRichard Henderson <rth@gcc.gnu.org>2002-10-24 15:36:25 -0700
commitfcbe3b8922f1d554d7f337303a4d20435f41aca1 (patch)
tree303fd708966de5851c83c960b0cf50c4c17644ba /gcc
parent1a86c85041bea7b9e8122ff73c75f56f62e04310 (diff)
downloadgcc-fcbe3b8922f1d554d7f337303a4d20435f41aca1.zip
gcc-fcbe3b8922f1d554d7f337303a4d20435f41aca1.tar.gz
gcc-fcbe3b8922f1d554d7f337303a4d20435f41aca1.tar.bz2
* config/i386/i386.c (x86_output_mi_thunk): Fix x86_64 pic jump.
From-SVN: r58508
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/i386/i386.c9
2 files changed, 12 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 38c2287..72006a2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2002-10-24 Richard Henderson <rth@redhat.com>
+
+ * config/i386/i386.c (x86_output_mi_thunk): Fix x86_64 pic jump.
+
2002-10-24 Kazu Hirata <kazu@cs.umass.edu>
* config/h8300/h8300.c (initial_offset): Simplify by using
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 4b13c46..f950198 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -14233,7 +14233,14 @@ x86_output_mi_thunk (file, thunk, delta, vcall_offset, function)
if (!flag_pic || (*targetm.binds_local_p) (function))
output_asm_insn ("jmp\t%P0", xops);
else
- output_asm_insn ("jmp\t*%P0@GOTPCREL(%%rip)", xops);
+ {
+ tmp = XEXP (xops[0], 0);
+ tmp = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, tmp), UNSPEC_GOTPCREL);
+ tmp = gen_rtx_CONST (Pmode, tmp);
+ tmp = gen_rtx_MEM (QImode, tmp);
+ xops[0] = tmp;
+ output_asm_insn ("jmp\t%A0", xops);
+ }
}
else
{