aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.h
diff options
context:
space:
mode:
authorKai Tietz <ktietz@redhat.com>2013-04-02 20:34:32 +0200
committerKai Tietz <ktietz@gcc.gnu.org>2013-04-02 20:34:32 +0200
commit82c0e1a0cb62932cce8764ddf098b070c16ba004 (patch)
treecb13617ed673270e2d6f46bff9bee1bd4a42cb30 /gcc/config/i386/i386.h
parent09bb4c99b03944e4910975593a80dcf1545886ff (diff)
downloadgcc-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.h7
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);