Author: evancheng Date: Wed Aug 1 18:45:51 2007 New Revision: 40701 URL: http://llvm.org/viewvc/llvm-project?rev=40701&view=rev Log: Mac OS X X86-64 low 4G address not available.
Modified: llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp llvm/trunk/lib/Target/X86/X86InstrInfo.td llvm/trunk/lib/Target/X86/X86Subtarget.cpp llvm/trunk/lib/Target/X86/X86Subtarget.h Modified: llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp?rev=40701&r1=40700&r2=40701&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp (original) +++ llvm/trunk/lib/Target/X86/X86ISelDAGToDAG.cpp Wed Aug 1 18:45:51 2007 @@ -614,7 +614,8 @@ bool isStatic = TM.getRelocationModel() == Reloc::Static; SDOperand N0 = N.getOperand(0); // Mac OS X X86-64 lower 4G address is not available. - bool isAbs32 = !is64Bit || (isStatic && !Subtarget->isTargetDarwin()); + bool isAbs32 = !is64Bit || + (isStatic && Subtarget->hasLow4GUserSpaceAddress()); if (GlobalAddressSDNode *G = dyn_cast<GlobalAddressSDNode>(N0)) { GlobalValue *GV = G->getGlobal(); if (isAbs32 || isRoot) { Modified: llvm/trunk/lib/Target/X86/X86InstrInfo.td URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrInfo.td?rev=40701&r1=40700&r2=40701&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86InstrInfo.td (original) +++ llvm/trunk/lib/Target/X86/X86InstrInfo.td Wed Aug 1 18:45:51 2007 @@ -162,6 +162,7 @@ def FPStack : Predicate<"!Subtarget->hasSSE2()">; def In32BitMode : Predicate<"!Subtarget->is64Bit()">; def In64BitMode : Predicate<"Subtarget->is64Bit()">; +def HasLow4G : Predicate<"Subtarget->hasLow4GUserSpaceAddress()">; def SmallCode : Predicate<"TM.getCodeModel() == CodeModel::Small">; def NotSmallCode : Predicate<"TM.getCodeModel() != CodeModel::Small">; def IsStatic : Predicate<"TM.getRelocationModel() == Reloc::Static">; Modified: llvm/trunk/lib/Target/X86/X86Subtarget.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Subtarget.cpp?rev=40701&r1=40700&r2=40701&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86Subtarget.cpp (original) +++ llvm/trunk/lib/Target/X86/X86Subtarget.cpp Wed Aug 1 18:45:51 2007 @@ -225,6 +225,7 @@ // FIXME: this is a known good value for Yonah. How about others? , MinRepStrSizeThreshold(128) , Is64Bit(is64Bit) + , HasLow4GUserAddress(true) , TargetType(isELF) { // Default to ELF unless otherwise specified. // Determine default and user specified characteristics @@ -285,6 +286,9 @@ } } + if (TargetType == isDarwin && Is64Bit) + HasLow4GUserAddress = false; + if (TargetType == isDarwin || TargetType == isCygwin || TargetType == isMingw || Modified: llvm/trunk/lib/Target/X86/X86Subtarget.h URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Subtarget.h?rev=40701&r1=40700&r2=40701&view=diff ============================================================================== --- llvm/trunk/lib/Target/X86/X86Subtarget.h (original) +++ llvm/trunk/lib/Target/X86/X86Subtarget.h Wed Aug 1 18:45:51 2007 @@ -46,18 +46,23 @@ }; /// AsmFlavor - Which x86 asm dialect to use. + /// AsmWriterFlavorTy AsmFlavor; /// PICStyle - Which PIC style to use + /// PICStyle::Style PICStyle; /// X86SSELevel - MMX, SSE1, SSE2, SSE3, SSSE3, or none supported. + /// X86SSEEnum X86SSELevel; /// X863DNowLevel - 3DNow or 3DNow Athlon, or none supported. + /// X863DNowEnum X863DNowLevel; /// HasX86_64 - True if the processor supports X86-64 instructions. + /// bool HasX86_64; /// stackAlignment - The minimum alignment known to hold of the stack frame on @@ -65,6 +70,7 @@ unsigned stackAlignment; /// Min. memset / memcpy size that is turned into rep/movs, rep/stos ops. + /// unsigned MinRepStrSizeThreshold; private: @@ -72,6 +78,10 @@ /// pointer size is 64 bit. bool Is64Bit; + /// HasLow4GUserAddress - True if the low 4G user-space address is available. + /// + bool HasLow4GUserAddress; + public: enum { isELF, isCygwin, isDarwin, isWindows, isMingw @@ -103,6 +113,10 @@ bool is64Bit() const { return Is64Bit; } + /// hasLow4GUserSpaceAddress - True if lower 4G user-space address is + /// available. + bool hasLow4GUserSpaceAddress() const { return HasLow4GUserAddress; } + PICStyle::Style getPICStyle() const { return PICStyle; } void setPICStyle(PICStyle::Style Style) { PICStyle = Style; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits