[llvm-commits] [llvm] r40701 - in /llvm/trunk/lib/Target/X86: X86ISelDAGToDAG.cpp X86InstrInfo.td X86Subtarget.cpp X86Subtarget.h
Chris Lattner
clattner at apple.com
Wed Aug 1 17:03:31 PDT 2007
Nice, thanks Evan!
-Chris
On Aug 1, 2007, at 4:45 PM, Evan Cheng wrote:
> 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 at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list