[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