Index: llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp =================================================================== --- llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ llvm/trunk/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -2799,7 +2799,7 @@ /// GetCPISymbol - Return the symbol for the specified constant pool entry. MCSymbol *AsmPrinter::GetCPISymbol(unsigned CPID) const { - if (getSubtargetInfo().getTargetTriple().isKnownWindowsMSVCEnvironment()) { + if (getSubtargetInfo().getTargetTriple().isWindowsMSVCEnvironment()) { const MachineConstantPoolEntry &CPE = MF->getConstantPool()->getConstants()[CPID]; if (!CPE.isMachineConstantPoolEntry()) { Index: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp =================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp +++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp @@ -386,7 +386,7 @@ static void computeUsesMSVCFloatingPoint(const Triple &TT, const Function &F, MachineModuleInfo &MMI) { // Only needed for MSVC - if (!TT.isKnownWindowsMSVCEnvironment()) + if (!TT.isWindowsMSVCEnvironment()) return; // If it's already set, nothing to do. Index: llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp =================================================================== --- llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp +++ llvm/trunk/lib/CodeGen/TargetLoweringObjectFileImpl.cpp @@ -1470,7 +1470,7 @@ const TargetMachine &TM) { TargetLoweringObjectFile::Initialize(Ctx, TM); const Triple &T = TM.getTargetTriple(); - if (T.isKnownWindowsMSVCEnvironment() || T.isWindowsItaniumEnvironment()) { + if (T.isWindowsMSVCEnvironment() || T.isWindowsItaniumEnvironment()) { StaticCtorSection = Ctx.getCOFFSection(".CRT$XCU", COFF::IMAGE_SCN_CNT_INITIALIZED_DATA | COFF::IMAGE_SCN_MEM_READ, @@ -1496,7 +1496,7 @@ unsigned Priority, const MCSymbol *KeySym, MCSectionCOFF *Default) { - if (T.isKnownWindowsMSVCEnvironment() || T.isWindowsItaniumEnvironment()) { + if (T.isWindowsMSVCEnvironment() || T.isWindowsItaniumEnvironment()) { // If the priority is the default, use .CRT$XCU, possibly associative. if (Priority == 65535) return Ctx.getAssociativeCOFFSection(Default, KeySym, 0); @@ -1556,9 +1556,7 @@ const GlobalValue *LHS, const GlobalValue *RHS, const TargetMachine &TM) const { const Triple &T = TM.getTargetTriple(); - if (!T.isKnownWindowsMSVCEnvironment() && - !T.isWindowsItaniumEnvironment() && - !T.isWindowsCoreCLREnvironment()) + if (T.isOSCygMing()) return nullptr; // Our symbols should exist in address space zero, cowardly no-op if Index: llvm/trunk/lib/IR/Mangler.cpp =================================================================== --- llvm/trunk/lib/IR/Mangler.cpp +++ llvm/trunk/lib/IR/Mangler.cpp @@ -186,7 +186,7 @@ if (!GV->hasDLLExportStorageClass() || GV->isDeclaration()) return; - if (TT.isKnownWindowsMSVCEnvironment()) + if (TT.isWindowsMSVCEnvironment()) OS << " /EXPORT:"; else OS << " -export:"; @@ -205,7 +205,7 @@ } if (!GV->getValueType()->isFunctionTy()) { - if (TT.isKnownWindowsMSVCEnvironment()) + if (TT.isWindowsMSVCEnvironment()) OS << ",DATA"; else OS << ",data"; @@ -214,7 +214,7 @@ void llvm::emitLinkerFlagsForUsedCOFF(raw_ostream &OS, const GlobalValue *GV, const Triple &T, Mangler &M) { - if (!T.isKnownWindowsMSVCEnvironment()) + if (!T.isWindowsMSVCEnvironment()) return; OS << " /INCLUDE:"; Index: llvm/trunk/lib/MC/MCWinCOFFStreamer.cpp =================================================================== --- llvm/trunk/lib/MC/MCWinCOFFStreamer.cpp +++ llvm/trunk/lib/MC/MCWinCOFFStreamer.cpp @@ -255,7 +255,7 @@ auto *Symbol = cast(S); const Triple &T = getContext().getObjectFileInfo()->getTargetTriple(); - if (T.isKnownWindowsMSVCEnvironment()) { + if (T.isWindowsMSVCEnvironment()) { if (ByteAlignment > 32) report_fatal_error("alignment is limited to 32-bytes"); @@ -267,7 +267,7 @@ Symbol->setExternal(true); Symbol->setCommon(Size, ByteAlignment); - if (!T.isKnownWindowsMSVCEnvironment() && ByteAlignment > 1) { + if (!T.isWindowsMSVCEnvironment() && ByteAlignment > 1) { SmallString<128> Directive; raw_svector_ostream OS(Directive); const MCObjectFileInfo *MFI = getContext().getObjectFileInfo(); Index: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp =================================================================== --- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp +++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp @@ -130,7 +130,7 @@ addBypassSlowDiv(64, 32); } - if (Subtarget.isTargetKnownWindowsMSVC() || + if (Subtarget.isTargetWindowsMSVC() || Subtarget.isTargetWindowsItanium()) { // Setup Windows compiler runtime calls. setLibcallName(RTLIB::SDIV_I64, "_alldiv"); @@ -1835,8 +1835,8 @@ // is. We should promote the value to 64-bits to solve this. // This is what the CRT headers do - `fmodf` is an inline header // function casting to f64 and calling `fmod`. - if (Subtarget.is32Bit() && (Subtarget.isTargetKnownWindowsMSVC() || - Subtarget.isTargetWindowsItanium())) + if (Subtarget.is32Bit() && + (Subtarget.isTargetWindowsMSVC() || Subtarget.isTargetWindowsItanium())) for (ISD::NodeType Op : {ISD::FCEIL, ISD::FCOS, ISD::FEXP, ISD::FFLOOR, ISD::FREM, ISD::FLOG, ISD::FLOG10, ISD::FPOW, ISD::FSIN}) @@ -17690,9 +17690,7 @@ return DAG.getCopyFromReg(Chain, DL, Reg, PtrVT, Chain.getValue(1)); } - if (Subtarget.isTargetKnownWindowsMSVC() || - Subtarget.isTargetWindowsItanium() || - Subtarget.isTargetWindowsGNU()) { + if (Subtarget.isOSWindows()) { // Just use the implicit TLS architecture // Need to generate something similar to: // mov rdx, qword [gs:abs 58H]; Load pointer to ThreadLocalStorage Index: llvm/trunk/lib/Target/X86/X86Subtarget.h =================================================================== --- llvm/trunk/lib/Target/X86/X86Subtarget.h +++ llvm/trunk/lib/Target/X86/X86Subtarget.h @@ -771,10 +771,6 @@ return TargetTriple.isWindowsMSVCEnvironment(); } - bool isTargetKnownWindowsMSVC() const { - return TargetTriple.isKnownWindowsMSVCEnvironment(); - } - bool isTargetWindowsCoreCLR() const { return TargetTriple.isWindowsCoreCLREnvironment(); } Index: llvm/trunk/test/CodeGen/X86/win_cst_pool.ll =================================================================== --- llvm/trunk/test/CodeGen/X86/win_cst_pool.ll +++ llvm/trunk/test/CodeGen/X86/win_cst_pool.ll @@ -1,7 +1,11 @@ +; Three variants of "MSVC" environments. +; RUN: llc < %s -mattr=sse2 -mattr=avx | FileCheck %s ; RUN: llc < %s -mtriple=x86_64-win32 -mattr=sse2 -mattr=avx | FileCheck %s +; RUN: llc < %s -mtriple=x86_64-windows-msvc -mattr=sse2 -mattr=avx | FileCheck %s +; GNU environment. ; RUN: llc < %s -mtriple=x86_64-win32-gnu -mattr=sse2 -mattr=avx | FileCheck -check-prefix=MINGW %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" -target triple = "x86_64-pc-windows-msvc" +target triple = "x86_64-pc-win32" define double @double() { ret double 0x0000000000800000 Index: llvm/trunk/unittests/ADT/TripleTest.cpp =================================================================== --- llvm/trunk/unittests/ADT/TripleTest.cpp +++ llvm/trunk/unittests/ADT/TripleTest.cpp @@ -1358,6 +1358,8 @@ EXPECT_EQ("i686-pc-windows-elf", Triple::normalize("i686-pc-windows-elf-elf")); + + EXPECT_TRUE(Triple("x86_64-pc-win32").isWindowsMSVCEnvironment()); } TEST(TripleTest, getARMCPUForArch) {