[llvm] r205338 - isTargetWindows() renamed to isTargetKnownWindowsMSVC()

Yaron Keren yaron.keren at gmail.com
Tue Apr 1 21:52:18 PDT 2014


Hi,

I had added/modified four functions corresponding exactly to the ones in
Triple.h in r205393 to avoid confusion.

However, this is not completely clear. You are highlighting a very
important issue here.

You listed the four environments

* MSVC: The MS ABI, MSVCRT environment as defined by Microsoft
* GNU: The MinGW32/MinGW32-W64 environment which uses MSVCRT and auxiliary
libraries
* Itanium: The MSVCRT environment + libc++ built with Itanium ABI
* Cygnus: The Cygwin environment which uses custom libraries for everything

but there is a fifth one, the UnknownEnvironment.

I have no idea what is the UnknownEnvironment on Windows but it's actually
being used by isWindowsMSVCEnvironment() called in several places in the
code. OTOH, The Itanium environment is actually used just in one location,
InitHeaderSearch.cpp.

The UnknownEnvironment may have been used in the past instead of the
generic Itanium  environment?

If so, the usage of Unknown enviroment on WIndows should be replaced with
the Itanium enviroment, and the corresponding functions both in Triple.h
and X86Subtarget.h renamed and modified accordingly?

What do you think?

Yaron






2014-04-02 4:22 GMT+03:00 Saleem Abdulrasool <compnerd at compnerd.org>:

> On Tue, Apr 1, 2014 at 11:15 AM, Yaron Keren <yaron.keren at gmail.com>wrote:
>
>> Author: yrnkrn
>> Date: Tue Apr  1 13:15:34 2014
>> New Revision: 205338
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=205338&view=rev
>> Log:
>> isTargetWindows() renamed to isTargetKnownWindowsMSVC()
>> to reflect its current functionality.
>>
>
> The OS is still Windows.  If you are going to split up the subtarget into
> the respective environments, then you should have the following at the very
> least:
>
> isTargetWindowsMSVC
> isTargetWindowsGNU
> isTargetWindowsCygnus
> isTargetWindowsItanium
>
>
>> Based on Takumi NAKAMURA suggestion.
>>
>>
>> Modified:
>>     llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp
>>     llvm/trunk/lib/Target/X86/X86FastISel.cpp
>>     llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>>     llvm/trunk/lib/Target/X86/X86ISelLowering.h
>>     llvm/trunk/lib/Target/X86/X86Subtarget.h
>>     llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
>>
>> Modified: llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp?rev=205338&r1=205337&r2=205338&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp (original)
>> +++ llvm/trunk/lib/Target/X86/X86AsmPrinter.cpp Tue Apr  1 13:15:34 2014
>> @@ -623,7 +623,7 @@ void X86AsmPrinter::EmitEndOfAsmFile(Mod
>>      OutStreamer.EmitAssemblerFlag(MCAF_SubsectionsViaSymbols);
>>    }
>>
>> -  if (Subtarget->isTargetWindows() && !Subtarget->isTargetCygMing() &&
>> +  if (Subtarget->isTargetKnownWindowsMSVC() &&
>> !Subtarget->isTargetCygMing() &&
>>        MMI->usesVAFloatArgument()) {
>>      StringRef SymbolName = Subtarget->is64Bit() ? "_fltused" :
>> "__fltused";
>>      MCSymbol *S = MMI->getContext().GetOrCreateSymbol(SymbolName);
>> @@ -681,12 +681,12 @@ void X86AsmPrinter::EmitEndOfAsmFile(Mod
>>        OutStreamer.SwitchSection(TLOFCOFF.getDrectveSection());
>>        SmallString<128> name;
>>        for (unsigned i = 0, e = DLLExportedGlobals.size(); i != e; ++i) {
>> -        if (Subtarget->isTargetWindows())
>> +        if (Subtarget->isTargetKnownWindowsMSVC())
>>            name = " /EXPORT:";
>>          else
>>            name = " -export:";
>>          name += DLLExportedGlobals[i]->getName();
>> -        if (Subtarget->isTargetWindows())
>> +        if (Subtarget->isTargetKnownWindowsMSVC())
>>            name += ",DATA";
>>          else
>>          name += ",data";
>> @@ -694,7 +694,7 @@ void X86AsmPrinter::EmitEndOfAsmFile(Mod
>>        }
>>
>>        for (unsigned i = 0, e = DLLExportedFns.size(); i != e; ++i) {
>> -        if (Subtarget->isTargetWindows())
>> +        if (Subtarget->isTargetKnownWindowsMSVC())
>>            name = " /EXPORT:";
>>          else
>>            name = " -export:";
>>
>> Modified: llvm/trunk/lib/Target/X86/X86FastISel.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86FastISel.cpp?rev=205338&r1=205337&r2=205338&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86FastISel.cpp (original)
>> +++ llvm/trunk/lib/Target/X86/X86FastISel.cpp Tue Apr  1 13:15:34 2014
>> @@ -876,7 +876,7 @@ bool X86FastISel::X86SelectRet(const Ins
>>    // a virtual register in the entry block, so now we copy the value out
>>    // and into %rax. We also do the same with %eax for Win32.
>>    if (F.hasStructRetAttr() &&
>> -      (Subtarget->is64Bit() || Subtarget->isTargetWindows())) {
>> +      (Subtarget->is64Bit() || Subtarget->isTargetKnownWindowsMSVC())) {
>>      unsigned Reg = X86MFInfo->getSRetReturnReg();
>>      assert(Reg &&
>>             "SRetReturnReg should have been set in
>> LowerFormalArguments()!");
>>
>> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=205338&r1=205337&r2=205338&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
>> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Tue Apr  1 13:15:34 2014
>> @@ -189,7 +189,7 @@ static TargetLoweringObjectFile *createT
>>      return new X86LinuxTargetObjectFile();
>>    if (Subtarget->isTargetELF())
>>      return new TargetLoweringObjectFileELF();
>> -  if (Subtarget->isTargetWindows())
>> +  if (Subtarget->isTargetKnownWindowsMSVC())
>>      return new X86WindowsTargetObjectFile();
>>    if (Subtarget->isTargetCOFF())
>>      return new TargetLoweringObjectFileCOFF();
>> @@ -250,7 +250,7 @@ void X86TargetLowering::resetOperationAc
>>        addBypassSlowDiv(64, 16);
>>    }
>>
>> -  if (Subtarget->isTargetWindows() && !Subtarget->isTargetCygMing()) {
>> +  if (Subtarget->isTargetKnownWindowsMSVC() &&
>> !Subtarget->isTargetCygMing()) {
>>      // Setup Windows compiler runtime calls.
>>      setLibcallName(RTLIB::SDIV_I64, "_alldiv");
>>      setLibcallName(RTLIB::UDIV_I64, "_aulldiv");
>> @@ -1906,7 +1906,7 @@ X86TargetLowering::LowerReturn(SDValue C
>>    // We saved the argument into a virtual register in the entry block,
>>    // so now we copy the value out and into %rax/%eax.
>>    if (DAG.getMachineFunction().getFunction()->hasStructRetAttr() &&
>> -      (Subtarget->is64Bit() || Subtarget->isTargetWindows())) {
>> +      (Subtarget->is64Bit() || Subtarget->isTargetKnownWindowsMSVC())) {
>>      MachineFunction &MF = DAG.getMachineFunction();
>>      X86MachineFunctionInfo *FuncInfo =
>> MF.getInfo<X86MachineFunctionInfo>();
>>      unsigned Reg = FuncInfo->getSRetReturnReg();
>> @@ -2291,7 +2291,7 @@ X86TargetLowering::LowerFormalArguments(
>>    // Save the argument into a virtual register so that we can access it
>>    // from the return points.
>>    if (MF.getFunction()->hasStructRetAttr() &&
>> -      (Subtarget->is64Bit() || Subtarget->isTargetWindows())) {
>> +      (Subtarget->is64Bit() || Subtarget->isTargetKnownWindowsMSVC())) {
>>      X86MachineFunctionInfo *FuncInfo =
>> MF.getInfo<X86MachineFunctionInfo>();
>>      unsigned Reg = FuncInfo->getSRetReturnReg();
>>      if (!Reg) {
>> @@ -8494,7 +8494,7 @@ X86TargetLowering::LowerGlobalTLSAddress
>>                                Chain.getValue(1));
>>    }
>>
>> -  if (Subtarget->isTargetWindows() || Subtarget->isTargetMingw()) {
>> +  if (Subtarget->isTargetKnownWindowsMSVC() ||
>> Subtarget->isTargetMingw()) {
>>      // Just use the implicit TLS architecture
>>      // Need to generate someting similar to:
>>      //   mov     rdx, qword [gs:abs 58H]; Load pointer to
>> ThreadLocalStorage
>> @@ -15882,7 +15882,7 @@ X86TargetLowering::EmitLoweredWinAlloca(
>>      }
>>    } else {
>>      const char *StackProbeSymbol =
>> -      Subtarget->isTargetWindows() ? "_chkstk" : "_alloca";
>> +      Subtarget->isTargetKnownWindowsMSVC() ? "_chkstk" : "_alloca";
>>
>>      BuildMI(*BB, MI, DL, TII->get(X86::CALLpcrel32))
>>        .addExternalSymbol(StackProbeSymbol)
>>
>> Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.h?rev=205338&r1=205337&r2=205338&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86ISelLowering.h (original)
>> +++ llvm/trunk/lib/Target/X86/X86ISelLowering.h Tue Apr  1 13:15:34 2014
>> @@ -756,7 +756,7 @@ namespace llvm {
>>      /// isTargetFTOL - Return true if the target uses the MSVC _ftol2
>> routine
>>      /// for fptoui.
>>      bool isTargetFTOL() const {
>> -      return Subtarget->isTargetWindows() && !Subtarget->is64Bit();
>> +      return Subtarget->isTargetKnownWindowsMSVC() &&
>> !Subtarget->is64Bit();
>>      }
>>
>>      /// isIntegerTypeFTOL - Return true if the MSVC _ftol2 routine
>> should be
>>
>> Modified: llvm/trunk/lib/Target/X86/X86Subtarget.h
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86Subtarget.h?rev=205338&r1=205337&r2=205338&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86Subtarget.h (original)
>> +++ llvm/trunk/lib/Target/X86/X86Subtarget.h Tue Apr  1 13:15:34 2014
>> @@ -343,7 +343,7 @@ public:
>>    bool isTargetNaCl() const { return TargetTriple.isOSNaCl(); }
>>    bool isTargetNaCl32() const { return isTargetNaCl() && !is64Bit(); }
>>    bool isTargetNaCl64() const { return isTargetNaCl() && is64Bit(); }
>> -  bool isTargetWindows() const {
>> +  bool isTargetKnownWindowsMSVC() const {
>>      return TargetTriple.isKnownWindowsMSVCEnvironment();
>>    }
>>    bool isTargetMingw() const { return
>> TargetTriple.isWindowsGNUEnvironment(); }
>> @@ -359,7 +359,7 @@ public:
>>    }
>>
>>    bool isTargetWin32() const {
>> -    return !In64BitMode && (isTargetCygMing() || isTargetWindows());
>> +    return !In64BitMode && (isTargetCygMing() ||
>> isTargetKnownWindowsMSVC());
>>    }
>>
>>    bool isPICStyleSet() const { return PICStyle != PICStyles::None; }
>>
>> Modified: llvm/trunk/lib/Target/X86/X86TargetMachine.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86TargetMachine.cpp?rev=205338&r1=205337&r2=205338&view=diff
>>
>> ==============================================================================
>> --- llvm/trunk/lib/Target/X86/X86TargetMachine.cpp (original)
>> +++ llvm/trunk/lib/Target/X86/X86TargetMachine.cpp Tue Apr  1 13:15:34
>> 2014
>> @@ -39,7 +39,7 @@ static std::string computeDataLayout(con
>>      Ret += "-p:32:32";
>>
>>    // Some ABIs align 64 bit integers and doubles to 64 bits, others to
>> 32.
>> -  if (ST.is64Bit() || ST.isTargetCygMing() || ST.isTargetWindows() ||
>> +  if (ST.is64Bit() || ST.isTargetCygMing() ||
>> ST.isTargetKnownWindowsMSVC() ||
>>        ST.isTargetNaCl())
>>      Ret += "-i64:64";
>>    else
>> @@ -60,7 +60,7 @@ static std::string computeDataLayout(con
>>      Ret += "-n8:16:32";
>>
>>    // The stack is aligned to 32 bits on some ABIs and 128 bits on others.
>> -  if (!ST.is64Bit() && (ST.isTargetCygMing() || ST.isTargetWindows()))
>> +  if (!ST.is64Bit() && (ST.isTargetCygMing() ||
>> ST.isTargetKnownWindowsMSVC()))
>>      Ret += "-S32";
>>    else
>>      Ret += "-S128";
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>
>
>
> --
> Saleem Abdulrasool
> compnerd (at) compnerd (dot) org
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140402/ae367b3a/attachment.html>


More information about the llvm-commits mailing list