OSDN Git Service

* config/i386/i386.c (x86_output_mi_thunk): Fix x86_64 pic jump.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 24 Oct 2002 22:36:25 +0000 (22:36 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 24 Oct 2002 22:36:25 +0000 (22:36 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@58508 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.c

index 38c2287..72006a2 100644 (file)
@@ -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
index 4b13c46..f950198 100644 (file)
@@ -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
     {