* reg-stack.c (reg_to_stack): Large models don't allow NAN to be loaded for constant large models. Non-large 64bit PIC can do. * i386.h (CASE_VECTOR_MODE): Large PIC cases are 64bit. * cmodel.h: Add LARGE PIC. * i386.md (UNSPEC_PLTOFF): New. (UNSPEC_SET_RIP, UNSPEC_SET_GOT_OFFSET): New; renumber other unspecs as needed. (*call_1_rex64): Disable for large models. (*call_1_rex64_large): New. (*call_value_1_rex64): Disable for large models. (*call_value_1_rex64_large): New. (set_rip_rex4): New. (set_got_offset_rex64): New. * predicates.md (constant_call_address_operand): For large model constant calls are not possible. * i386-protos.h (construct_plt_address): Declare. * i386.c (override_options): Accept large models. (ix86_expand_prologue): Expand large PIC GOT pointer load. (legitimate_constant_p): Add new UNSPECs. (legitimate_pic_operand_p): Likewise. (legitimate_pic_address_disp_p): Disallow local symbols for large PICs. (legitimize_pic_address): Do easy RIP relative way for TLS only for non-large model. (output_pic_addr_const): Add PLTOFF. (ix86_output_addr_diff_elt): Output 64bit tables when needed. (ix86_expand_move): Legitimize pic address when in PIC mode. (construct_plt_address): New function. (ix86_expand_call): Offload the address to register and use GOT pointer for large model. * invoke.texi (mcmodel=large): Update documentation. From-SVN: r122623
Name |
Last commit
|
Last update |
---|---|---|
.. | ||
include | Loading commit data... | |
bugreport.texi | Loading commit data... | |
c-tree.texi | Loading commit data... | |
cfg.texi | Loading commit data... | |
collect2.texi | Loading commit data... | |
compat.texi | Loading commit data... | |
configfiles.texi | Loading commit data... | |
configterms.texi | Loading commit data... | |
contrib.texi | Loading commit data... | |
contribute.texi | Loading commit data... | |
cpp.texi | Loading commit data... | |
cppenv.texi | Loading commit data... | |
cppinternals.texi | Loading commit data... | |
cppopts.texi | Loading commit data... | |
extend.texi | Loading commit data... | |
fragments.texi | Loading commit data... | |
frontends.texi | Loading commit data... | |
gcc.texi | Loading commit data... | |
gccint.texi | Loading commit data... | |
gcov.texi | Loading commit data... | |
gnu.texi | Loading commit data... | |
gty.texi | Loading commit data... | |
headerdirs.texi | Loading commit data... | |
hostconfig.texi | Loading commit data... | |
implement-c.texi | Loading commit data... | |
install-old.texi | Loading commit data... | |
install.texi | Loading commit data... | |
install.texi2html | Loading commit data... | |
interface.texi | Loading commit data... | |
invoke.texi | Loading commit data... | |
languages.texi | Loading commit data... | |
libgcc.texi | Loading commit data... | |
loop.texi | Loading commit data... | |
makefile.texi | Loading commit data... | |
md.texi | Loading commit data... | |
objc.texi | Loading commit data... | |
options.texi | Loading commit data... | |
passes.texi | Loading commit data... | |
portability.texi | Loading commit data... | |
rtl.texi | Loading commit data... | |
service.texi | Loading commit data... | |
sourcebuild.texi | Loading commit data... | |
standards.texi | Loading commit data... | |
tm.texi | Loading commit data... | |
tree-ssa.texi | Loading commit data... | |
trouble.texi | Loading commit data... |