62 const llvm::opt::ArgList &Args);
64 llvm::opt::DerivedArgList *
71 bool isPIEDefault(
const llvm::opt::ArgList &Args)
const override;
78 return getTriple().isOSBinFormatCOFF() ? llvm::codegenoptions::DIF_CodeView
79 : llvm::codegenoptions::DIF_DWARF;
85 return llvm::DebuggerKind::Default;
92 std::string getSubDirectoryPath(llvm::SubDirectoryType
Type,
93 llvm::StringRef SubdirParent =
"")
const;
94 std::string getSubDirectoryPath(llvm::SubDirectoryType
Type,
95 llvm::Triple::ArchType TargetArch)
const;
98 return VSLayout == llvm::ToolsetLayout::VS2017OrNewer;
102 AddClangSystemIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
103 llvm::opt::ArgStringList &CC1Args)
const override;
105 GetCXXStdlibName(
const llvm::opt::ArgList &DriverArgs)
const override;
106 void AddClangCXXStdlibIncludeArgs(
107 const llvm::opt::ArgList &DriverArgs,
108 llvm::opt::ArgStringList &CC1Args)
const override;
110 void AddCudaIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
111 llvm::opt::ArgStringList &CC1Args)
const override;
113 void AddHIPIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
114 llvm::opt::ArgStringList &CC1Args)
const override;
116 void addOffloadRTLibs(
unsigned ActiveKinds,
const llvm::opt::ArgList &Args,
117 llvm::opt::ArgStringList &CmdArgs)
const override;
119 void addSYCLIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
120 llvm::opt::ArgStringList &CC1Args)
const override;
122 bool getWindowsSDKLibraryPath(
123 const llvm::opt::ArgList &Args, std::string &path)
const;
124 bool getUniversalCRTLibraryPath(
const llvm::opt::ArgList &Args,
125 std::string &path)
const;
126 bool useUniversalCRT()
const;
128 computeMSVCVersion(
const Driver *D,
129 const llvm::opt::ArgList &Args)
const override;
131 std::string ComputeEffectiveClangTriple(
const llvm::opt::ArgList &Args,
138 void printVerboseInfo(raw_ostream &OS)
const override;
143 addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
144 llvm::opt::ArgStringList &CC1Args,
BoundArch BA,
148 void AddMSVCStdlibMultilibIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
149 llvm::opt::ArgStringList &CC1Args,
150 bool HonorNostdincxx)
const;
151 void AddMSVCStdlibIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
152 llvm::opt::ArgStringList &CC1Args)
const;
154 void AddSystemIncludeWithSubfolder(
const llvm::opt::ArgList &DriverArgs,
155 llvm::opt::ArgStringList &CC1Args,
156 const std::string &folder,
157 const Twine &subfolder1,
158 const Twine &subfolder2 =
"",
159 const Twine &subfolder3 =
"")
const;
162 Tool *buildLinker()
const override;
163 Tool *buildAssembler()
const override;
166 std::optional<llvm::StringRef> WinSdkDir, WinSdkVersion, WinSysRoot;
167 std::string VCToolChainPath;
168 llvm::ToolsetLayout VSLayout = llvm::ToolsetLayout::OlderVS;
172 mutable std::unique_ptr<tools::ARM64XObjcopy> Objcopy;