diff options
author | Kai Tietz <ktietz@redhat.com> | 2013-04-02 20:34:32 +0200 |
---|---|---|
committer | Kai Tietz <ktietz@gcc.gnu.org> | 2013-04-02 20:34:32 +0200 |
commit | 82c0e1a0cb62932cce8764ddf098b070c16ba004 (patch) | |
tree | cb13617ed673270e2d6f46bff9bee1bd4a42cb30 /gcc/config/i386/i386.h | |
parent | 09bb4c99b03944e4910975593a80dcf1545886ff (diff) | |
download | gcc-82c0e1a0cb62932cce8764ddf098b070c16ba004.zip gcc-82c0e1a0cb62932cce8764ddf098b070c16ba004.tar.gz gcc-82c0e1a0cb62932cce8764ddf098b070c16ba004.tar.bz2 |
re PR target/52790 (Problems using x86_64-w64-mingw-w32-gfortran with mcmodel=large and medium)
PR target/52790
* config/i386/cygming.h (SUB_TARGET_RECORD_STUB): New sub-target macro.
* config/i386/i386-protos.h (i386_pe_record_stub): Add new prototype.
* config/i386/i386.c (legitimize_pe_coff_extern_decl): New static
function.
(legitimize_pe_coff_symbol): Likewise.
(is_imported_p): New helper-function.
(ix86_option_override_internal): Make MEDIUM_PIC the default code-model
for Windows x64 targets.
(ix86_expand_prologue): Optimize for pe-coff targets.
(ix86_expand_split_stack_prologue): Adjust for pe-coff targets.
(legitimate_pic_address_disp_p): Adjust for x64 pe-coff to support
medium/large code-model.
(legitimize_pic_address): Likewise.
(legitimize_tls_address): Likewise.
(ix86_expand_call): Likewise.
(x86_output_mi_thunk): Likewise.
(get_dllimport_decl): Add new beimport argument.
(construct_plt_address): Don't assert for x64 pe-coff targets.
* config/i386/i386.h (PIC_OFFSET_TABLE_REGNUM): Adjust for x64 pe-coff
targets.
(SYMBOL_FLAG_STUBVAR): New macro.
(SYMBOL_REF_STUBVAR_P): Likewise.
* config/i386/winnt.c (stub_list): New structure.
(stub_head): New local variable.
(i386_pe_record_stub): New function.
(i386_pe_file_end): Emit refptr-stubs.
From-SVN: r197373
Diffstat (limited to 'gcc/config/i386/i386.h')
-rw-r--r-- | gcc/config/i386/i386.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h index a69862c..5d31f80 100644 --- a/gcc/config/i386/i386.h +++ b/gcc/config/i386/i386.h @@ -1179,7 +1179,8 @@ enum target_cpu_default #define REAL_PIC_OFFSET_TABLE_REGNUM BX_REG #define PIC_OFFSET_TABLE_REGNUM \ - ((TARGET_64BIT && ix86_cmodel == CM_SMALL_PIC) \ + ((TARGET_64BIT && (ix86_cmodel == CM_SMALL_PIC \ + || DEFAULT_ABI == MS_ABI)) \ || !flag_pic ? INVALID_REGNUM \ : reload_completed ? REGNO (pic_offset_table_rtx) \ : REAL_PIC_OFFSET_TABLE_REGNUM) @@ -2379,6 +2380,10 @@ struct GTY(()) machine_function { #define SYMBOL_REF_DLLEXPORT_P(X) \ ((SYMBOL_REF_FLAGS (X) & SYMBOL_FLAG_DLLEXPORT) != 0) +#define SYMBOL_FLAG_STUBVAR (SYMBOL_FLAG_MACH_DEP << 4) +#define SYMBOL_REF_STUBVAR_P(X) \ + ((SYMBOL_REF_FLAGS (X) & SYMBOL_FLAG_STUBVAR) != 0) + extern void debug_ready_dispatch (void); extern void debug_dispatch_window (int); |