diff options
author | Richard Sandiford <richard@codesourcery.com> | 2007-03-07 09:02:14 +0000 |
---|---|---|
committer | Richard Sandiford <richard@codesourcery.com> | 2007-03-07 09:02:14 +0000 |
commit | 984b17fc0d7ef38a1e0d7f824fdbbe39c2c37ac6 (patch) | |
tree | eb38f6b5024536d2a0d27737e35ec58fac5d7355 /gcc/config/i386/i386.md | |
parent | 2046c701e0f7bdb22033ab0c6430a18cd7f281d0 (diff) |
gcc/
* config/i386/i386.c (output_set_got): Add a GOT initialization
sequence for VxWorks PIC.
(legitimate_pic_address_disp_p): Allow UNSPEC_GOT wrappers
around labels as well as symbols. Use gotoff_operand instead
of local_symbolic_operand.
(legitimize_pic_address): Use gotoff_operand instead of
local_symbolic_operand. Use @GOT accesses for labels as
well as symbols.
(ix86_output_addr_diff_elt): Use PC-relative rather than
GP-relative offsets for VxWorks PIC.
(ix86_expand_move): Pass NULL_RTX to legitimize_pic_address unless
no_new_pseudos. Check whether the returned register is op0.
* config/i386/i386.md (tablejump): Use PC-relative rather than
GP-relative offsets for VxWorks PIC.
* config/i386/predicates.md (gotoff_operand): New predicate.
git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@122654 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/i386/i386.md')
-rw-r--r-- | gcc/config/i386/i386.md | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index f66318b86eb..507edd69065 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -14353,7 +14353,9 @@ rtx op0, op1; enum rtx_code code; - if (TARGET_64BIT) + /* We can't use @GOTOFF for text labels on VxWorks; + see gotoff_operand. */ + if (TARGET_64BIT || TARGET_VXWORKS_RTP) { code = PLUS; op0 = operands[0]; |