Commit 28968d91 by H.J. Lu Committed by H.J. Lu

Add -maddress-mode=short|long for x86

2012-03-14  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/50797
	* config/i386/i386-opts.h (pmode): New.

	* config/i386/i386.c (ix86_option_override_internal): Properly
	check and set ix86_pmode.

	* config/i386/i386.h (Pmode): Check ix86_pmode instead of
	TARGET_64BIT.

	* config/i386/i386.opt (maddress-mode=): New.

	* doc/invoke.texi: Document -maddress-mode=short|long for x86.

From-SVN: r185396
parent 7c17f335
2012-03-14 H.J. Lu <hongjiu.lu@intel.com>
PR target/50797
* config/i386/i386-opts.h (pmode): New.
* config/i386/i386.c (ix86_option_override_internal): Properly
check and set ix86_pmode.
* config/i386/i386.h (Pmode): Check ix86_pmode instead of
TARGET_64BIT.
* config/i386/i386.opt (maddress-mode=): New.
* doc/invoke.texi: Document -maddress-mode=short|long for x86.
2012-03-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> 2012-03-14 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
* dwarf2cfi.c (def_cfa_0): Remove MIPS_DEBUGGING_INFO handling. * dwarf2cfi.c (def_cfa_0): Remove MIPS_DEBUGGING_INFO handling.
......
...@@ -71,6 +71,11 @@ enum cmodel { ...@@ -71,6 +71,11 @@ enum cmodel {
CM_LARGE_PIC /* No assumptions. */ CM_LARGE_PIC /* No assumptions. */
}; };
enum pmode {
PMODE_SI, /* Pmode == SImode. */
PMODE_DI /* Pmode == DImode. */
};
enum asm_dialect { enum asm_dialect {
ASM_ATT, ASM_ATT,
ASM_INTEL ASM_INTEL
......
...@@ -3172,6 +3172,17 @@ ix86_option_override_internal (bool main_args_p) ...@@ -3172,6 +3172,17 @@ ix86_option_override_internal (bool main_args_p)
else else
ix86_arch_specified = 1; ix86_arch_specified = 1;
if (global_options_set.x_ix86_pmode)
{
if ((TARGET_LP64 && ix86_pmode == PMODE_SI)
|| (!TARGET_64BIT && ix86_pmode == PMODE_DI))
error ("address mode %qs not supported in the %s bit mode",
TARGET_64BIT ? "short" : "long",
TARGET_64BIT ? "64" : "32");
}
else
ix86_pmode = TARGET_LP64 ? PMODE_DI : PMODE_SI;
if (!global_options_set.x_ix86_abi) if (!global_options_set.x_ix86_abi)
ix86_abi = DEFAULT_ABI; ix86_abi = DEFAULT_ABI;
...@@ -1748,7 +1748,7 @@ do { \ ...@@ -1748,7 +1748,7 @@ do { \
/* Specify the machine mode that pointers have. /* Specify the machine mode that pointers have.
After generation of rtl, the compiler makes no further distinction After generation of rtl, the compiler makes no further distinction
between pointers and any other objects of this machine mode. */ between pointers and any other objects of this machine mode. */
#define Pmode (TARGET_64BIT ? DImode : SImode) #define Pmode (ix86_pmode == PMODE_DI ? DImode : SImode)
/* A C expression whose value is zero if pointers that need to be extended /* A C expression whose value is zero if pointers that need to be extended
from being `POINTER_SIZE' bits wide to `Pmode' are sign-extended and from being `POINTER_SIZE' bits wide to `Pmode' are sign-extended and
......
...@@ -159,6 +159,20 @@ Enum(cmodel) String(32) Value(CM_32) ...@@ -159,6 +159,20 @@ Enum(cmodel) String(32) Value(CM_32)
EnumValue EnumValue
Enum(cmodel) String(kernel) Value(CM_KERNEL) Enum(cmodel) String(kernel) Value(CM_KERNEL)
maddress-mode=
Target RejectNegative Joined Enum(pmode) Var(ix86_pmode) Init(PMODE_SI)
Use given address mode
Enum
Name(pmode) Type(enum pmode)
Known address mode (for use with the -maddress-mode= option):
EnumValue
Enum(pmode) String(short) Value(PMODE_SI)
EnumValue
Enum(pmode) String(long) Value(PMODE_DI)
mcpu= mcpu=
Target RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead) Target RejectNegative Joined Undocumented Alias(mtune=) Warn(%<-mcpu=%> is deprecated; use %<-mtune=%> or %<-march=%> instead)
......
...@@ -634,7 +634,7 @@ Objective-C and Objective-C++ Dialects}. ...@@ -634,7 +634,7 @@ Objective-C and Objective-C++ Dialects}.
-mveclibabi=@var{type} -mvect8-ret-in-mem @gol -mveclibabi=@var{type} -mvect8-ret-in-mem @gol
-mpc32 -mpc64 -mpc80 -mstackrealign @gol -mpc32 -mpc64 -mpc80 -mstackrealign @gol
-momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs @gol -momit-leaf-frame-pointer -mno-red-zone -mno-tls-direct-seg-refs @gol
-mcmodel=@var{code-model} -mabi=@var{name} @gol -mcmodel=@var{code-model} -mabi=@var{name} -maddress-mode=@var{mode} @gol
-m32 -m64 -mx32 -mlarge-data-threshold=@var{num} @gol -m32 -m64 -mx32 -mlarge-data-threshold=@var{num} @gol
-msse2avx -mfentry -m8bit-idiv @gol -msse2avx -mfentry -m8bit-idiv @gol
-mavx256-split-unaligned-load -mavx256-split-unaligned-store} -mavx256-split-unaligned-load -mavx256-split-unaligned-store}
...@@ -13929,6 +13929,18 @@ be statically or dynamically linked. ...@@ -13929,6 +13929,18 @@ be statically or dynamically linked.
@opindex mcmodel=large @opindex mcmodel=large
Generate code for the large model. This model makes no assumptions Generate code for the large model. This model makes no assumptions
about addresses and sizes of sections. about addresses and sizes of sections.
@item -maddress-mode=long
@opindex maddress-mode=long
Generate code for long address mode. This is only supported for 64-bit
and x32 environments. It is the default address mode for 64-bit
environments.
@item -maddress-mode=short
@opindex maddress-mode=short
Generate code for short address mode. This is only supported for 32-bit
and x32 environments. It is the default address mode for 32-bit and
x32 environments.
@end table @end table
@node i386 and x86-64 Windows Options @node i386 and x86-64 Windows Options
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment