===================================================================
@@ -55,6 +55,9 @@ along with GCC; see the file COPYING3. If not see
#undef DEFAULT_ABI
#define DEFAULT_ABI (TARGET_64BIT ? MS_ABI : SYSV_ABI)
+#undef TARGET_PECOFF
+#define TARGET_PECOFF 1
+
#if ! defined (USE_MINGW64_LEADING_UNDERSCORES)
#undef USER_LABEL_PREFIX
#define USER_LABEL_PREFIX (TARGET_64BIT ? "" : "_")
===================================================================
@@ -3235,7 +3235,7 @@ ix86_option_override_internal (bool main_args_p)
use of rip-relative addressing. This eliminates fixups that
would otherwise be needed if this object is to be placed in a
DLL, and is essentially just as efficient as direct addressing. */
- if (TARGET_64BIT && (TARGET_RDOS || DEFAULT_ABI == MS_ABI))
+ if (TARGET_64BIT && (TARGET_RDOS || TARGET_PECOFF))
ix86_cmodel = CM_MEDIUM_PIC, flag_pic = 1;
else if (TARGET_64BIT)
ix86_cmodel = flag_pic ? CM_SMALL_PIC : CM_SMALL;
@@ -10581,7 +10595,7 @@ ix86_expand_prologue (void)
pic_reg_used = false;
/* We don't use pic-register for pe-coff target. */
if (pic_offset_table_rtx
- && DEFAULT_ABI != MS_ABI
+ && !TARGET_PECOFF
&& (df_regs_ever_live_p (REAL_PIC_OFFSET_TABLE_REGNUM)
|| crtl->profile))
{
@@ -11387,7 +11401,7 @@ ix86_expand_split_stack_prologue (void)
}
if ((ix86_cmodel == CM_LARGE || ix86_cmodel == CM_LARGE_PIC)
- && DEFAULT_ABI != MS_ABI)
+ && !TARGET_PECOFF)
{
HOST_WIDE_INT argval;
@@ -12112,7 +12126,7 @@ legitimate_pic_address_disp_p (rtx disp)
|| (TARGET_DLLIMPORT_DECL_ATTRIBUTES &&
SYMBOL_REF_DLLIMPORT_P (op0)))
return false;
- if (DEFAULT_ABI == MS_ABI)
+ if (TARGET_PECOFF)
{
if (is_imported_p (op0))
return true;
@@ -12199,7 +12213,7 @@ legitimate_pic_address_disp_p (rtx disp)
if ((GET_CODE (XVECEXP (disp, 0, 0)) == SYMBOL_REF
|| GET_CODE (XVECEXP (disp, 0, 0)) == LABEL_REF)
&& !TARGET_64BIT)
- return DEFAULT_ABI != MS_ABI && gotoff_operand (XVECEXP
(disp, 0, 0), Pmode);
+ return !TARGET_PECOFF && gotoff_operand (XVECEXP (disp, 0, 0), Pmode);
return false;
case UNSPEC_GOTTPOFF:
case UNSPEC_GOTNTPOFF:
@@ -12543,7 +12557,7 @@ legitimize_pic_address (rtx orig, rtx reg)
if (TARGET_64BIT && legitimate_pic_address_disp_p (addr))
new_rtx = addr;
- else if (TARGET_64BIT && DEFAULT_ABI != MS_ABI
+ else if (TARGET_64BIT && !TARGET_PECOFF
&& ix86_cmodel != CM_SMALL_PIC && gotoff_operand (addr, Pmode))
{
rtx tmpreg;
@@ -12578,7 +12592,7 @@ legitimize_pic_address (rtx orig, rtx reg)
else
new_rtx = gen_rtx_PLUS (Pmode, pic_offset_table_rtx, tmpreg);
}
- else if (!TARGET_64BIT && DEFAULT_ABI != MS_ABI && gotoff_operand
(addr, Pmode))
+ else if (!TARGET_64BIT && !TARGET_PECOFF && gotoff_operand (addr, Pmode))
{
/* This symbol may be referenced via a displacement from the PIC
base address (@GOTOFF). */
@@ -12615,7 +12629,7 @@ legitimize_pic_address (rtx orig, rtx reg)
/* For x64 PE-COFF there is no GOT table. So we use address
directly. */
- if (TARGET_64BIT && DEFAULT_ABI == MS_ABI)
+ if (TARGET_64BIT && TARGET_PECOFF)
{
new_rtx = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, addr), UNSPEC_PCREL);
new_rtx = gen_rtx_CONST (Pmode, new_rtx);
@@ -12693,7 +12707,7 @@ legitimize_pic_address (rtx orig, rtx reg)
/* Check first to see if this is a constant offset from a @GOTOFF
symbol reference. */
- if (DEFAULT_ABI != MS_ABI && gotoff_operand (op0, Pmode)
+ if (!TARGET_PECOFF && gotoff_operand (op0, Pmode)
&& CONST_INT_P (op1))
{
if (!TARGET_64BIT)
@@ -12837,7 +12851,7 @@ legitimize_tls_address (rtx x, enum tls_model mode
if (!TARGET_64BIT)
{
- if (flag_pic && DEFAULT_ABI != MS_ABI)
+ if (flag_pic && !TARGET_PECOFF)
pic = pic_offset_table_rtx;
else
{
@@ -13160,7 +13174,7 @@ legitimize_dllimport_symbol (rtx symbol, bool want
static rtx
legitimize_pe_coff_symbol (rtx addr, bool inreg)
{
- if (DEFAULT_ABI != MS_ABI)
+ if (!TARGET_PECOFF)
return NULL_RTX;
if (TARGET_DLLIMPORT_DECL_ATTRIBUTES)
@@ -13442,7 +13456,7 @@ output_pic_addr_const (FILE *file, rtx x, int code
#endif
assemble_name (file, name);
}
- if (!TARGET_MACHO && !(TARGET_64BIT && DEFAULT_ABI == MS_ABI)
+ if (!TARGET_MACHO && !(TARGET_64BIT && TARGET_PECOFF)
&& code == 'P' && ! SYMBOL_REF_LOCAL_P (x))
fputs ("@PLT", file);
break;
@@ -23688,7 +23702,7 @@ construct_plt_address (rtx symbol)
rtx tmp, unspec;
gcc_assert (GET_CODE (symbol) == SYMBOL_REF);
- gcc_assert (ix86_cmodel == CM_LARGE_PIC && DEFAULT_ABI != MS_ABI);
+ gcc_assert (ix86_cmodel == CM_LARGE_PIC && !TARGET_PECOFF);
gcc_assert (Pmode == DImode);
tmp = gen_reg_rtx (Pmode);
@@ -23731,7 +23745,7 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx call
{
/* Static functions and indirect calls don't need the pic register. */
if (flag_pic && (!TARGET_64BIT
- || (ix86_cmodel == CM_LARGE_PIC && DEFAULT_ABI
!= MS_ABI))
+ || (ix86_cmodel == CM_LARGE_PIC && !TARGET_PECOFF))
&& GET_CODE (XEXP (fnaddr, 0)) == SYMBOL_REF
&& ! SYMBOL_REF_LOCAL_P (XEXP (fnaddr, 0)))
use_reg (&use, pic_offset_table_rtx);
@@ -23745,7 +23759,7 @@ ix86_expand_call (rtx retval, rtx fnaddr, rtx call
}
if (ix86_cmodel == CM_LARGE_PIC
- && DEFAULT_ABI != MS_ABI
+ && !TARGET_PECOFF
&& MEM_P (fnaddr)
&& GET_CODE (XEXP (fnaddr, 0)) == SYMBOL_REF
&& !local_symbolic_operand (XEXP (fnaddr, 0), VOIDmode))
@@ -35089,7 +35103,7 @@ x86_output_mi_thunk (FILE *file,
if (TARGET_64BIT)
{
if (!flag_pic || targetm.binds_local_p (function)
- || DEFAULT_ABI == MS_ABI)
+ || TARGET_PECOFF)
;
else
{
@@ -35202,7 +35216,7 @@ x86_function_profiler (FILE *file, int labelno ATT
fprintf (file, "\tleaq\t%sP%d(%%rip),%%r11\n", LPREFIX, labelno);
#endif
- if (DEFAULT_ABI == SYSV_ABI && flag_pic)
+ if (!TARGET_PECOFF && flag_pic)
fprintf (file, "\tcall\t*%s@GOTPCREL(%%rip)\n", mcount_name);
else
fprintf (file, "\tcall\t%s\n", mcount_name);
===================================================================
@@ -533,6 +533,9 @@ extern tree x86_mfence;
/* This is re-defined by cygming.h. */
#define TARGET_SEH 0
+/* This is re-defined by cygming.h. */
+#define TARGET_PECOFF 0
+
/* The default abi used by target. */
#define DEFAULT_ABI SYSV_ABI
@@ -1183,7 +1186,7 @@ enum target_cpu_default
#define PIC_OFFSET_TABLE_REGNUM \
((TARGET_64BIT && (ix86_cmodel == CM_SMALL_PIC \
- || DEFAULT_ABI == MS_ABI)) \
+ || TARGET_PECOFF)) \
|| !flag_pic ? INVALID_REGNUM \
: reload_completed ? REGNO (pic_offset_table_rtx) \
: REAL_PIC_OFFSET_TABLE_REGNUM)