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;
104 void AddClangCXXStdlibIncludeArgs(
105 const llvm::opt::ArgList &DriverArgs,
106 llvm::opt::ArgStringList &CC1Args)
const override;
108 void AddCudaIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
109 llvm::opt::ArgStringList &CC1Args)
const override;
111 void AddHIPIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
112 llvm::opt::ArgStringList &CC1Args)
const override;
114 void addOffloadRTLibs(
unsigned ActiveKinds,
const llvm::opt::ArgList &Args,
115 llvm::opt::ArgStringList &CmdArgs)
const override;
117 void addSYCLIncludeArgs(
const llvm::opt::ArgList &DriverArgs,
118 llvm::opt::ArgStringList &CC1Args)
const override;
120 bool getWindowsSDKLibraryPath(
121 const llvm::opt::ArgList &Args, std::string &path)
const;
122 bool getUniversalCRTLibraryPath(
const llvm::opt::ArgList &Args,
123 std::string &path)
const;
124 bool useUniversalCRT()
const;
126 computeMSVCVersion(
const Driver *D,
127 const llvm::opt::ArgList &Args)
const override;
129 std::string ComputeEffectiveClangTriple(
const llvm::opt::ArgList &Args,
136 void printVerboseInfo(raw_ostream &OS)
const override;
141 addClangTargetOptions(
const llvm::opt::ArgList &DriverArgs,
142 llvm::opt::ArgStringList &CC1Args,
BoundArch BA,
146 void AddSystemIncludeWithSubfolder(
const llvm::opt::ArgList &DriverArgs,
147 llvm::opt::ArgStringList &CC1Args,
148 const std::string &folder,
149 const Twine &subfolder1,
150 const Twine &subfolder2 =
"",
151 const Twine &subfolder3 =
"")
const;
154 Tool *buildLinker()
const override;
155 Tool *buildAssembler()
const override;
158 std::optional<llvm::StringRef> WinSdkDir, WinSdkVersion, WinSysRoot;
159 std::string VCToolChainPath;
160 llvm::ToolsetLayout VSLayout = llvm::ToolsetLayout::OlderVS;
164 mutable std::unique_ptr<tools::ARM64XObjcopy> Objcopy;