Author: Fangrui Song Date: 2022-12-03T20:17:05Z New Revision: 2c5d49cffc1f2db52e5119bdbb44f0b10a678fb7
URL: https://github.com/llvm/llvm-project/commit/2c5d49cffc1f2db52e5119bdbb44f0b10a678fb7 DIFF: https://github.com/llvm/llvm-project/commit/2c5d49cffc1f2db52e5119bdbb44f0b10a678fb7.diff LOG: [Driver] llvm::Optional => std::optional and change a few referenced Basic and llvm/lib/WindowsDriver API Added: Modified: clang/include/clang/Basic/DarwinSDKInfo.h clang/include/clang/Basic/TargetID.h clang/include/clang/Driver/ToolChain.h clang/lib/Basic/DarwinSDKInfo.cpp clang/lib/Basic/TargetID.cpp clang/lib/Driver/Driver.cpp clang/lib/Driver/OffloadBundler.cpp clang/lib/Driver/ToolChains/AMDGPU.h clang/lib/Driver/ToolChains/AVR.cpp clang/lib/Driver/ToolChains/AVR.h clang/lib/Driver/ToolChains/Arch/ARM.cpp clang/lib/Driver/ToolChains/Arch/CSKY.cpp clang/lib/Driver/ToolChains/Arch/CSKY.h clang/lib/Driver/ToolChains/Cuda.cpp clang/lib/Driver/ToolChains/Darwin.cpp clang/lib/Driver/ToolChains/Darwin.h clang/lib/Driver/ToolChains/Gnu.cpp clang/lib/Driver/ToolChains/Gnu.h clang/lib/Driver/ToolChains/HLSL.cpp clang/lib/Driver/ToolChains/HLSL.h clang/lib/Driver/ToolChains/Hexagon.cpp clang/lib/Driver/ToolChains/Hexagon.h clang/lib/Driver/ToolChains/MSVC.cpp clang/lib/Driver/ToolChains/MSVC.h clang/lib/Sema/SemaDeclAttr.cpp llvm/include/llvm/WindowsDriver/MSVCPaths.h llvm/lib/WindowsDriver/MSVCPaths.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Basic/DarwinSDKInfo.h b/clang/include/clang/Basic/DarwinSDKInfo.h index cac9d22b32a32..8cc10df4924b1 100644 --- a/clang/include/clang/Basic/DarwinSDKInfo.h +++ b/clang/include/clang/Basic/DarwinSDKInfo.h @@ -100,9 +100,9 @@ class DarwinSDKInfo { /// Returns the mapped key, or the appropriate Minimum / MaximumValue if /// they key is outside of the mapping bounds. If they key isn't mapped, but /// within the minimum and maximum bounds, None is returned. - Optional<VersionTuple> map(const VersionTuple &Key, - const VersionTuple &MinimumValue, - Optional<VersionTuple> MaximumValue) const; + std::optional<VersionTuple> + map(const VersionTuple &Key, const VersionTuple &MinimumValue, + std::optional<VersionTuple> MaximumValue) const; static Optional<RelatedTargetVersionMapping> parseJSON(const llvm::json::Object &Obj, @@ -145,7 +145,7 @@ class DarwinSDKInfo { return Mapping->getSecond() ? &*Mapping->getSecond() : nullptr; } - static Optional<DarwinSDKInfo> + static std::optional<DarwinSDKInfo> parseDarwinSDKSettingsJSON(const llvm::json::Object *Obj); private: @@ -162,8 +162,8 @@ class DarwinSDKInfo { /// /// \returns an error if the SDKSettings.json file is invalid, None if the /// SDK has no SDKSettings.json, or a valid \c DarwinSDKInfo otherwise. -Expected<Optional<DarwinSDKInfo>> parseDarwinSDKInfo(llvm::vfs::FileSystem &VFS, - StringRef SDKRootPath); +Expected<std::optional<DarwinSDKInfo>> +parseDarwinSDKInfo(llvm::vfs::FileSystem &VFS, StringRef SDKRootPath); } // end namespace clang diff --git a/clang/include/clang/Basic/TargetID.h b/clang/include/clang/Basic/TargetID.h index a34bebbae1ad4..de24253ec9ed3 100644 --- a/clang/include/clang/Basic/TargetID.h +++ b/clang/include/clang/Basic/TargetID.h @@ -49,7 +49,7 @@ std::string getCanonicalTargetID(llvm::StringRef Processor, /// Get the conflicted pair of target IDs for a compilation or a bundled code /// object, assuming \p TargetIDs are canonicalized. If there is no conflicts, /// returns None. -llvm::Optional<std::pair<llvm::StringRef, llvm::StringRef>> +std::optional<std::pair<llvm::StringRef, llvm::StringRef>> getConflictTargetIDCombination(const std::set<llvm::StringRef> &TargetIDs); /// Check whether the provided target ID is compatible with the requested diff --git a/clang/include/clang/Driver/ToolChain.h b/clang/include/clang/Driver/ToolChain.h index ec00bf9eb5945..396cf6a9e2fa1 100644 --- a/clang/include/clang/Driver/ToolChain.h +++ b/clang/include/clang/Driver/ToolChain.h @@ -181,9 +181,9 @@ class ToolChain { EffectiveTriple = std::move(ET); } - mutable llvm::Optional<CXXStdlibType> cxxStdlibType; - mutable llvm::Optional<RuntimeLibType> runtimeLibType; - mutable llvm::Optional<UnwindLibType> unwindLibType; + mutable std::optional<CXXStdlibType> cxxStdlibType; + mutable std::optional<RuntimeLibType> runtimeLibType; + mutable std::optional<UnwindLibType> unwindLibType; protected: MultilibSet Multilibs; diff --git a/clang/lib/Basic/DarwinSDKInfo.cpp b/clang/lib/Basic/DarwinSDKInfo.cpp index ca2412008c03a..a1c071c5f620d 100644 --- a/clang/lib/Basic/DarwinSDKInfo.cpp +++ b/clang/lib/Basic/DarwinSDKInfo.cpp @@ -14,9 +14,9 @@ using namespace clang; -Optional<VersionTuple> DarwinSDKInfo::RelatedTargetVersionMapping::map( +std::optional<VersionTuple> DarwinSDKInfo::RelatedTargetVersionMapping::map( const VersionTuple &Key, const VersionTuple &MinimumValue, - Optional<VersionTuple> MaximumValue) const { + std::optional<VersionTuple> MaximumValue) const { if (Key < MinimumKeyVersion) return MinimumValue; if (Key > MaximumKeyVersion) @@ -72,7 +72,7 @@ static Optional<VersionTuple> getVersionKey(const llvm::json::Object &Obj, return Version; } -Optional<DarwinSDKInfo> +std::optional<DarwinSDKInfo> DarwinSDKInfo::parseDarwinSDKSettingsJSON(const llvm::json::Object *Obj) { auto Version = getVersionKey(*Obj, "Version"); if (!Version) @@ -126,7 +126,7 @@ DarwinSDKInfo::parseDarwinSDKSettingsJSON(const llvm::json::Object *Obj) { std::move(VersionMappings)); } -Expected<Optional<DarwinSDKInfo>> +Expected<std::optional<DarwinSDKInfo>> clang::parseDarwinSDKInfo(llvm::vfs::FileSystem &VFS, StringRef SDKRootPath) { llvm::SmallString<256> Filepath = SDKRootPath; llvm::sys::path::append(Filepath, "SDKSettings.json"); diff --git a/clang/lib/Basic/TargetID.cpp b/clang/lib/Basic/TargetID.cpp index e50080c5603cb..23c0281c19899 100644 --- a/clang/lib/Basic/TargetID.cpp +++ b/clang/lib/Basic/TargetID.cpp @@ -140,7 +140,7 @@ std::string getCanonicalTargetID(llvm::StringRef Processor, // For a specific processor, a feature either shows up in all target IDs, or // does not show up in any target IDs. Otherwise the target ID combination // is invalid. -llvm::Optional<std::pair<llvm::StringRef, llvm::StringRef>> +std::optional<std::pair<llvm::StringRef, llvm::StringRef>> getConflictTargetIDCombination(const std::set<llvm::StringRef> &TargetIDs) { struct Info { llvm::StringRef TargetID; diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index d01df7f48f07d..05cc68e6b4e30 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -106,8 +106,8 @@ using namespace clang::driver; using namespace clang; using namespace llvm::opt; -static llvm::Optional<llvm::Triple> -getOffloadTargetTriple(const Driver &D, const ArgList &Args) { +static std::optional<llvm::Triple> getOffloadTargetTriple(const Driver &D, + const ArgList &Args) { auto OffloadTargets = Args.getAllArgValues(options::OPT_offload_EQ); // Offload compilation flow does not support multiple targets for now. We // need the HIPActionBuilder (and possibly the CudaActionBuilder{,Base}too) @@ -125,7 +125,7 @@ getOffloadTargetTriple(const Driver &D, const ArgList &Args) { return llvm::Triple(OffloadTargets[0]); } -static llvm::Optional<llvm::Triple> +static std::optional<llvm::Triple> getNVIDIAOffloadTargetTriple(const Driver &D, const ArgList &Args, const llvm::Triple &HostTriple) { if (!Args.hasArg(options::OPT_offload_EQ)) { @@ -143,7 +143,7 @@ getNVIDIAOffloadTargetTriple(const Driver &D, const ArgList &Args, D.Diag(diag::err_drv_invalid_or_unsupported_offload_target) << TT->str(); return std::nullopt; } -static llvm::Optional<llvm::Triple> +static std::optional<llvm::Triple> getHIPOffloadTargetTriple(const Driver &D, const ArgList &Args) { if (!Args.hasArg(options::OPT_offload_EQ)) { return llvm::Triple("amdgcn-amd-amdhsa"); // Default HIP triple. @@ -234,7 +234,7 @@ Driver::Driver(StringRef ClangExecutable, StringRef TargetTriple, void Driver::setDriverMode(StringRef Value) { static const std::string OptName = getOpts().getOption(options::OPT_driver_mode).getPrefixedName(); - if (auto M = llvm::StringSwitch<llvm::Optional<DriverMode>>(Value) + if (auto M = llvm::StringSwitch<std::optional<DriverMode>>(Value) .Case("gcc", GCCMode) .Case("g++", GXXMode) .Case("cpp", CPPMode) @@ -2988,7 +2988,7 @@ class OffloadingActionBuilder final { /// option is invalid. virtual StringRef getCanonicalOffloadArch(StringRef Arch) = 0; - virtual llvm::Optional<std::pair<llvm::StringRef, llvm::StringRef>> + virtual std::optional<std::pair<llvm::StringRef, llvm::StringRef>> getConflictOffloadArchCombination(const std::set<StringRef> &GpuArchs) = 0; bool initialize() override { @@ -3125,7 +3125,7 @@ class OffloadingActionBuilder final { return CudaArchToString(Arch); } - llvm::Optional<std::pair<llvm::StringRef, llvm::StringRef>> + std::optional<std::pair<llvm::StringRef, llvm::StringRef>> getConflictOffloadArchCombination( const std::set<StringRef> &GpuArchs) override { return std::nullopt; @@ -3244,7 +3244,7 @@ class OffloadingActionBuilder final { // Bundle code objects except --no-gpu-output is specified for device // only compilation. Bundle other type of output files only if // --gpu-bundle-output is specified for device only compilation. - Optional<bool> BundleOutput; + std::optional<bool> BundleOutput; public: HIPActionBuilder(Compilation &C, DerivedArgList &Args, @@ -3275,7 +3275,7 @@ class OffloadingActionBuilder final { return Args.MakeArgStringRef(CanId); }; - llvm::Optional<std::pair<llvm::StringRef, llvm::StringRef>> + std::optional<std::pair<llvm::StringRef, llvm::StringRef>> getConflictOffloadArchCombination( const std::set<StringRef> &GpuArchs) override { return getConflictTargetIDCombination(GpuArchs); @@ -4207,7 +4207,7 @@ static StringRef getCanonicalArchString(Compilation &C, /// Checks if the set offloading architectures does not conflict. Returns the /// incompatible pair if a conflict occurs. -static llvm::Optional<std::pair<llvm::StringRef, llvm::StringRef>> +static std::optional<std::pair<llvm::StringRef, llvm::StringRef>> getConflictOffloadArchCombination(const llvm::DenseSet<StringRef> &Archs, Action::OffloadKind Kind) { if (Kind != Action::OFK_HIP) @@ -5710,7 +5710,7 @@ const char *Driver::GetNamedOutputPath(Compilation &C, const JobAction &JA, std::string Driver::GetFilePath(StringRef Name, const ToolChain &TC) const { // Search for Name in a list of paths. auto SearchPaths = [&](const llvm::SmallVectorImpl<std::string> &P) - -> llvm::Optional<std::string> { + -> std::optional<std::string> { // Respect a limited subset of the '-Bprefix' functionality in GCC by // attempting to use this prefix when looking for file paths. for (const auto &Dir : P) { diff --git a/clang/lib/Driver/OffloadBundler.cpp b/clang/lib/Driver/OffloadBundler.cpp index a21deef7a30a8..46c4092cfce94 100644 --- a/clang/lib/Driver/OffloadBundler.cpp +++ b/clang/lib/Driver/OffloadBundler.cpp @@ -202,7 +202,7 @@ class FileHandler { /// Read the marker of the next bundled to be read in the file. The bundle /// name is returned if there is one in the file, or `None` if there are no /// more bundles to be read. - virtual Expected<Optional<StringRef>> + virtual Expected<std::optional<StringRef>> ReadBundleStart(MemoryBuffer &Input) = 0; /// Read the marker that closes the current bundle. @@ -245,7 +245,8 @@ class FileHandler { Error forEachBundle(MemoryBuffer &Input, std::function<Error(const BundleInfo &)> Func) { while (true) { - Expected<Optional<StringRef>> CurTripleOrErr = ReadBundleStart(Input); + Expected<std::optional<StringRef>> CurTripleOrErr = + ReadBundleStart(Input); if (!CurTripleOrErr) return CurTripleOrErr.takeError(); @@ -415,7 +416,8 @@ class BinaryFileHandler final : public FileHandler { return Error::success(); } - Expected<Optional<StringRef>> ReadBundleStart(MemoryBuffer &Input) final { + Expected<std::optional<StringRef>> + ReadBundleStart(MemoryBuffer &Input) final { if (NextBundleInfo == BundlesInfo.end()) return std::nullopt; CurBundleInfo = NextBundleInfo++; @@ -501,7 +503,7 @@ class TempFileHandlerRAII { } // Creates temporary file with given contents. - Expected<StringRef> Create(Optional<ArrayRef<char>> Contents) { + Expected<StringRef> Create(std::optional<ArrayRef<char>> Contents) { SmallString<128u> File; if (std::error_code EC = sys::fs::createTemporaryFile("clang-offload-bundler", "tmp", File)) @@ -538,7 +540,8 @@ class ObjectFileHandler final : public FileHandler { /// Return bundle name (<kind>-<triple>) if the provided section is an offload /// section. - static Expected<Optional<StringRef>> IsOffloadSection(SectionRef CurSection) { + static Expected<std::optional<StringRef>> + IsOffloadSection(SectionRef CurSection) { Expected<StringRef> NameOrErr = CurSection.getName(); if (!NameOrErr) return NameOrErr.takeError(); @@ -576,14 +579,15 @@ class ObjectFileHandler final : public FileHandler { Error ReadHeader(MemoryBuffer &Input) final { return Error::success(); } - Expected<Optional<StringRef>> ReadBundleStart(MemoryBuffer &Input) final { + Expected<std::optional<StringRef>> + ReadBundleStart(MemoryBuffer &Input) final { while (NextSection != Obj->section_end()) { CurrentSection = NextSection; ++NextSection; // Check if the current section name starts with the reserved prefix. If // so, return the triple. - Expected<Optional<StringRef>> TripleOrErr = + Expected<std::optional<StringRef>> TripleOrErr = IsOffloadSection(*CurrentSection); if (!TripleOrErr) return TripleOrErr.takeError(); @@ -733,7 +737,8 @@ class TextFileHandler final : public FileHandler { protected: Error ReadHeader(MemoryBuffer &Input) final { return Error::success(); } - Expected<Optional<StringRef>> ReadBundleStart(MemoryBuffer &Input) final { + Expected<std::optional<StringRef>> + ReadBundleStart(MemoryBuffer &Input) final { StringRef FC = Input.getBuffer(); // Find start of the bundle. @@ -989,7 +994,8 @@ Error OffloadBundler::UnbundleFiles() { // assume the file is meant for the host target. bool FoundHostBundle = false; while (!Worklist.empty()) { - Expected<Optional<StringRef>> CurTripleOrErr = FH->ReadBundleStart(Input); + Expected<std::optional<StringRef>> CurTripleOrErr = + FH->ReadBundleStart(Input); if (!CurTripleOrErr) return CurTripleOrErr.takeError(); @@ -1180,12 +1186,12 @@ Error OffloadBundler::UnbundleArchive() { if (Error ReadErr = FileHandler.get()->ReadHeader(*CodeObjectBuffer)) return ReadErr; - Expected<Optional<StringRef>> CurBundleIDOrErr = + Expected<std::optional<StringRef>> CurBundleIDOrErr = FileHandler->ReadBundleStart(*CodeObjectBuffer); if (!CurBundleIDOrErr) return CurBundleIDOrErr.takeError(); - Optional<StringRef> OptionalCurBundleID = *CurBundleIDOrErr; + std::optional<StringRef> OptionalCurBundleID = *CurBundleIDOrErr; // No device code in this child, skip. if (!OptionalCurBundleID) continue; @@ -1245,7 +1251,7 @@ Error OffloadBundler::UnbundleArchive() { if (Error Err = FileHandler.get()->ReadBundleEnd(*CodeObjectBuffer)) return Err; - Expected<Optional<StringRef>> NextTripleOrErr = + Expected<std::optional<StringRef>> NextTripleOrErr = FileHandler->ReadBundleStart(*CodeObjectBuffer); if (!NextTripleOrErr) return NextTripleOrErr.takeError(); diff --git a/clang/lib/Driver/ToolChains/AMDGPU.h b/clang/lib/Driver/ToolChains/AMDGPU.h index ddcc124b25bac..0ac13ecaa6345 100644 --- a/clang/lib/Driver/ToolChains/AMDGPU.h +++ b/clang/lib/Driver/ToolChains/AMDGPU.h @@ -113,9 +113,9 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUToolChain : public Generic_ELF { /// The struct type returned by getParsedTargetID. struct ParsedTargetIDType { - Optional<std::string> OptionalTargetID; - Optional<std::string> OptionalGPUArch; - Optional<llvm::StringMap<bool>> OptionalFeatures; + std::optional<std::string> OptionalTargetID; + std::optional<std::string> OptionalGPUArch; + std::optional<llvm::StringMap<bool>> OptionalFeatures; }; /// Get target ID, GPU arch, and target ID features if the target ID is diff --git a/clang/lib/Driver/ToolChains/AVR.cpp b/clang/lib/Driver/ToolChains/AVR.cpp index dad8669dbe7db..feee3d0cdd561 100644 --- a/clang/lib/Driver/ToolChains/AVR.cpp +++ b/clang/lib/Driver/ToolChains/AVR.cpp @@ -341,17 +341,17 @@ std::string GetMCUSubPath(StringRef MCUName) { return ""; } -llvm::Optional<StringRef> GetMCUFamilyName(StringRef MCUName) { +std::optional<StringRef> GetMCUFamilyName(StringRef MCUName) { for (const auto &MCU : MCUInfo) if (MCU.Name == MCUName) - return Optional<StringRef>(MCU.Family); + return std::optional<StringRef>(MCU.Family); return std::nullopt; } -llvm::Optional<unsigned> GetMCUSectionAddressData(StringRef MCUName) { +std::optional<unsigned> GetMCUSectionAddressData(StringRef MCUName) { for (const auto &MCU : MCUInfo) if (MCU.Name == MCUName && MCU.DataAddr > 0) - return Optional<unsigned>(MCU.DataAddr); + return std::optional<unsigned>(MCU.DataAddr); return std::nullopt; } @@ -388,7 +388,7 @@ void AVRToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, return; // Omit if there is no avr-libc installed. - Optional<std::string> AVRLibcRoot = findAVRLibcInstallation(); + std::optional<std::string> AVRLibcRoot = findAVRLibcInstallation(); if (!AVRLibcRoot) return; @@ -443,9 +443,9 @@ void AVR::Linker::ConstructJob(Compilation &C, const JobAction &JA, // Compute information about the target AVR. std::string CPU = getCPUName(D, Args, getToolChain().getTriple()); - llvm::Optional<StringRef> FamilyName = GetMCUFamilyName(CPU); - llvm::Optional<std::string> AVRLibcRoot = TC.findAVRLibcInstallation(); - llvm::Optional<unsigned> SectionAddressData = GetMCUSectionAddressData(CPU); + std::optional<StringRef> FamilyName = GetMCUFamilyName(CPU); + std::optional<std::string> AVRLibcRoot = TC.findAVRLibcInstallation(); + std::optional<unsigned> SectionAddressData = GetMCUSectionAddressData(CPU); // Compute the linker program path, and use GNU "avr-ld" as default. const Arg *A = Args.getLastArg(options::OPT_fuse_ld_EQ); @@ -562,7 +562,7 @@ void AVR::Linker::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs, Inputs, Output)); } -llvm::Optional<std::string> AVRToolChain::findAVRLibcInstallation() const { +std::optional<std::string> AVRToolChain::findAVRLibcInstallation() const { // Search avr-libc installation according to avr-gcc installation. std::string GCCParent(GCCInstallation.getParentLibPath()); std::string Path(GCCParent + "/avr"); diff --git a/clang/lib/Driver/ToolChains/AVR.h b/clang/lib/Driver/ToolChains/AVR.h index cd2bbee9efd66..ea161fe28f331 100644 --- a/clang/lib/Driver/ToolChains/AVR.h +++ b/clang/lib/Driver/ToolChains/AVR.h @@ -31,7 +31,7 @@ class LLVM_LIBRARY_VISIBILITY AVRToolChain : public Generic_ELF { llvm::opt::ArgStringList &CC1Args, Action::OffloadKind DeviceOffloadKind) const override; - llvm::Optional<std::string> findAVRLibcInstallation() const; + std::optional<std::string> findAVRLibcInstallation() const; StringRef getGCCInstallPath() const { return GCCInstallPath; } std::string getCompilerRT(const llvm::opt::ArgList &Args, StringRef Component, FileType Type) const override; diff --git a/clang/lib/Driver/ToolChains/Arch/ARM.cpp b/clang/lib/Driver/ToolChains/Arch/ARM.cpp index bbf466ba847de..b6a9df28500ae 100644 --- a/clang/lib/Driver/ToolChains/Arch/ARM.cpp +++ b/clang/lib/Driver/ToolChains/Arch/ARM.cpp @@ -442,8 +442,7 @@ void arm::getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple, bool KernelOrKext = Args.hasArg(options::OPT_mkernel, options::OPT_fapple_kext); arm::FloatABI ABI = arm::getARMFloatABI(D, Triple, Args); - llvm::Optional<std::pair<const Arg *, StringRef>> WaCPU, WaFPU, WaHDiv, - WaArch; + std::optional<std::pair<const Arg *, StringRef>> WaCPU, WaFPU, WaHDiv, WaArch; // This vector will accumulate features from the architecture // extension suffixes on -mcpu and -march (e.g. the 'bar' in diff --git a/clang/lib/Driver/ToolChains/Arch/CSKY.cpp b/clang/lib/Driver/ToolChains/Arch/CSKY.cpp index b6e50ee47cb3c..94c8406a69702 100644 --- a/clang/lib/Driver/ToolChains/Arch/CSKY.cpp +++ b/clang/lib/Driver/ToolChains/Arch/CSKY.cpp @@ -25,7 +25,7 @@ using namespace clang::driver::tools; using namespace clang; using namespace llvm::opt; -llvm::Optional<llvm::StringRef> +std::optional<llvm::StringRef> csky::getCSKYArchName(const Driver &D, const ArgList &Args, const llvm::Triple &Triple) { if (const Arg *A = Args.getLastArg(options::OPT_march_EQ)) { @@ -35,7 +35,7 @@ csky::getCSKYArchName(const Driver &D, const ArgList &Args, D.Diag(clang::diag::err_drv_invalid_arch_name) << A->getAsString(Args); return std::nullopt; } - return llvm::Optional<llvm::StringRef>(A->getValue()); + return std::optional<llvm::StringRef>(A->getValue()); } if (const Arg *A = Args.getLastArg(clang::driver::options::OPT_mcpu_EQ)) { @@ -44,10 +44,10 @@ csky::getCSKYArchName(const Driver &D, const ArgList &Args, D.Diag(clang::diag::err_drv_clang_unsupported) << A->getAsString(Args); return std::nullopt; } - return llvm::Optional<llvm::StringRef>(llvm::CSKY::getArchName(ArchKind)); + return std::optional<llvm::StringRef>(llvm::CSKY::getArchName(ArchKind)); } - return llvm::Optional<llvm::StringRef>("ck810"); + return std::optional<llvm::StringRef>("ck810"); } csky::FloatABI csky::getCSKYFloatABI(const Driver &D, const ArgList &Args) { diff --git a/clang/lib/Driver/ToolChains/Arch/CSKY.h b/clang/lib/Driver/ToolChains/Arch/CSKY.h index d23da1d66e357..f3730d2cf4a14 100644 --- a/clang/lib/Driver/ToolChains/Arch/CSKY.h +++ b/clang/lib/Driver/ToolChains/Arch/CSKY.h @@ -35,9 +35,9 @@ void getCSKYTargetFeatures(const Driver &D, const llvm::Triple &Triple, llvm::opt::ArgStringList &CmdArgs, std::vector<llvm::StringRef> &Features); -llvm::Optional<llvm::StringRef> getCSKYArchName(const Driver &D, - const llvm::opt::ArgList &Args, - const llvm::Triple &Triple); +std::optional<llvm::StringRef> getCSKYArchName(const Driver &D, + const llvm::opt::ArgList &Args, + const llvm::Triple &Triple); } // end namespace csky } // namespace tools diff --git a/clang/lib/Driver/ToolChains/Cuda.cpp b/clang/lib/Driver/ToolChains/Cuda.cpp index 0f693698c48cf..f4bcb73aa54e0 100644 --- a/clang/lib/Driver/ToolChains/Cuda.cpp +++ b/clang/lib/Driver/ToolChains/Cuda.cpp @@ -81,7 +81,7 @@ CudaVersion parseCudaHFile(llvm::StringRef Input) { // None otherwise. auto StartsWithWords = [](llvm::StringRef Line, - const SmallVector<StringRef, 3> words) -> llvm::Optional<StringRef> { + const SmallVector<StringRef, 3> words) -> std::optional<StringRef> { for (StringRef word : words) { if (!Line.consume_front(word)) return {}; diff --git a/clang/lib/Driver/ToolChains/Darwin.cpp b/clang/lib/Driver/ToolChains/Darwin.cpp index 5d536b83cef0f..f77a51250c192 100644 --- a/clang/lib/Driver/ToolChains/Darwin.cpp +++ b/clang/lib/Driver/ToolChains/Darwin.cpp @@ -1555,7 +1555,7 @@ struct DarwinPlatform { /// Returns true if the simulator environment can be inferred from the arch. bool canInferSimulatorFromArch() const { return InferSimulatorFromArch; } - const Optional<llvm::Triple> &getTargetVariantTriple() const { + const std::optional<llvm::Triple> &getTargetVariantTriple() const { return TargetVariantTriple; } @@ -1606,7 +1606,7 @@ struct DarwinPlatform { void setEnvironment(llvm::Triple::EnvironmentType EnvType, const VersionTuple &OSVersion, - const Optional<DarwinSDKInfo> &SDKInfo) { + const std::optional<DarwinSDKInfo> &SDKInfo) { switch (EnvType) { case llvm::Triple::Simulator: Environment = DarwinEnvironmentKind::Simulator; @@ -1643,8 +1643,8 @@ struct DarwinPlatform { static DarwinPlatform createFromTarget(const llvm::Triple &TT, StringRef OSVersion, Arg *A, - Optional<llvm::Triple> TargetVariantTriple, - const Optional<DarwinSDKInfo> &SDKInfo) { + std::optional<llvm::Triple> TargetVariantTriple, + const std::optional<DarwinSDKInfo> &SDKInfo) { DarwinPlatform Result(TargetArg, getPlatformFromOS(TT.getOS()), OSVersion, A); VersionTuple OsVersion = TT.getOSVersion(); @@ -1657,7 +1657,7 @@ struct DarwinPlatform { static DarwinPlatform createFromMTargetOS(llvm::Triple::OSType OS, VersionTuple OSVersion, llvm::Triple::EnvironmentType Environment, Arg *A, - const Optional<DarwinSDKInfo> &SDKInfo) { + const std::optional<DarwinSDKInfo> &SDKInfo) { DarwinPlatform Result(MTargetOSArg, getPlatformFromOS(OS), OSVersion.getAsString(), A); Result.InferSimulatorFromArch = false; @@ -1739,12 +1739,12 @@ struct DarwinPlatform { bool HasOSVersion = true, InferSimulatorFromArch = true; Arg *Argument; StringRef EnvVarName; - Optional<llvm::Triple> TargetVariantTriple; + std::optional<llvm::Triple> TargetVariantTriple; }; /// Returns the deployment target that's specified using the -m<os>-version-min /// argument. -Optional<DarwinPlatform> +std::optional<DarwinPlatform> getDeploymentTargetFromOSVersionArg(DerivedArgList &Args, const Driver &TheDriver) { Arg *macOSVersion = Args.getLastArg(options::OPT_mmacos_version_min_EQ); @@ -1796,7 +1796,7 @@ getDeploymentTargetFromOSVersionArg(DerivedArgList &Args, /// Returns the deployment target that's specified using the /// OS_DEPLOYMENT_TARGET environment variable. -Optional<DarwinPlatform> +std::optional<DarwinPlatform> getDeploymentTargetFromEnvironmentVariables(const Driver &TheDriver, const llvm::Triple &Triple) { std::string Targets[Darwin::LastDarwinPlatform + 1]; @@ -1861,9 +1861,9 @@ static StringRef dropSDKNamePrefix(StringRef SDKName) { /// Tries to infer the deployment target from the SDK specified by -isysroot /// (or SDKROOT). Uses the version specified in the SDKSettings.json file if /// it's available. -Optional<DarwinPlatform> +std::optional<DarwinPlatform> inferDeploymentTargetFromSDK(DerivedArgList &Args, - const Optional<DarwinSDKInfo> &SDKInfo) { + const std::optional<DarwinSDKInfo> &SDKInfo) { const Arg *A = Args.getLastArg(options::OPT_isysroot); if (!A) return std::nullopt; @@ -1888,7 +1888,7 @@ inferDeploymentTargetFromSDK(DerivedArgList &Args, return std::nullopt; auto CreatePlatformFromSDKName = - [&](StringRef SDK) -> Optional<DarwinPlatform> { + [&](StringRef SDK) -> std::optional<DarwinPlatform> { if (SDK.startswith("iPhoneOS") || SDK.startswith("iPhoneSimulator")) return DarwinPlatform::createFromSDK( Darwin::IPhoneOS, Version, @@ -1958,7 +1958,7 @@ std::string getOSVersion(llvm::Triple::OSType OS, const llvm::Triple &Triple, } /// Tries to infer the target OS from the -arch. -Optional<DarwinPlatform> +std::optional<DarwinPlatform> inferDeploymentTargetFromArch(DerivedArgList &Args, const Darwin &Toolchain, const llvm::Triple &Triple, const Driver &TheDriver) { @@ -1981,16 +1981,16 @@ inferDeploymentTargetFromArch(DerivedArgList &Args, const Darwin &Toolchain, } /// Returns the deployment target that's specified using the -target option. -Optional<DarwinPlatform> getDeploymentTargetFromTargetArg( +std::optional<DarwinPlatform> getDeploymentTargetFromTargetArg( DerivedArgList &Args, const llvm::Triple &Triple, const Driver &TheDriver, - const Optional<DarwinSDKInfo> &SDKInfo) { + const std::optional<DarwinSDKInfo> &SDKInfo) { if (!Args.hasArg(options::OPT_target)) return std::nullopt; if (Triple.getOS() == llvm::Triple::Darwin || Triple.getOS() == llvm::Triple::UnknownOS) return std::nullopt; std::string OSVersion = getOSVersion(Triple.getOS(), Triple, TheDriver); - Optional<llvm::Triple> TargetVariantTriple; + std::optional<llvm::Triple> TargetVariantTriple; for (const Arg *A : Args.filtered(options::OPT_darwin_target_variant)) { llvm::Triple TVT(A->getValue()); // Find a matching <arch>-<vendor> target variant triple that can be used. @@ -2021,10 +2021,9 @@ Optional<DarwinPlatform> getDeploymentTargetFromTargetArg( } /// Returns the deployment target that's specified using the -mtargetos option. -Optional<DarwinPlatform> -getDeploymentTargetFromMTargetOSArg(DerivedArgList &Args, - const Driver &TheDriver, - const Optional<DarwinSDKInfo> &SDKInfo) { +std::optional<DarwinPlatform> getDeploymentTargetFromMTargetOSArg( + DerivedArgList &Args, const Driver &TheDriver, + const std::optional<DarwinSDKInfo> &SDKInfo) { auto *A = Args.getLastArg(options::OPT_mtargetos_EQ); if (!A) return std::nullopt; @@ -2051,9 +2050,9 @@ getDeploymentTargetFromMTargetOSArg(DerivedArgList &Args, TT.getEnvironment(), A, SDKInfo); } -Optional<DarwinSDKInfo> parseSDKSettings(llvm::vfs::FileSystem &VFS, - const ArgList &Args, - const Driver &TheDriver) { +std::optional<DarwinSDKInfo> parseSDKSettings(llvm::vfs::FileSystem &VFS, + const ArgList &Args, + const Driver &TheDriver) { const Arg *A = Args.getLastArg(options::OPT_isysroot); if (!A) return std::nullopt; @@ -2096,7 +2095,7 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { SDKInfo = parseSDKSettings(getVFS(), Args, getDriver()); // The OS and the version can be specified using the -target argument. - Optional<DarwinPlatform> OSTarget = + std::optional<DarwinPlatform> OSTarget = getDeploymentTargetFromTargetArg(Args, getTriple(), getDriver(), SDKInfo); if (OSTarget) { // Disallow mixing -target and -mtargetos=. @@ -2106,7 +2105,7 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { getDriver().Diag(diag::err_drv_cannot_mix_options) << TargetArgStr << MTargetOSArgStr; } - Optional<DarwinPlatform> OSVersionArgTarget = + std::optional<DarwinPlatform> OSVersionArgTarget = getDeploymentTargetFromOSVersionArg(Args, getDriver()); if (OSVersionArgTarget) { unsigned TargetMajor, TargetMinor, TargetMicro; @@ -2141,7 +2140,7 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { SDKInfo))) { // The OS target can be specified using the -mtargetos= argument. // Disallow mixing -mtargetos= and -m<os>version-min=. - Optional<DarwinPlatform> OSVersionArgTarget = + std::optional<DarwinPlatform> OSVersionArgTarget = getDeploymentTargetFromOSVersionArg(Args, getDriver()); if (OSVersionArgTarget) { std::string MTargetOSArgStr = OSTarget->getAsString(Args, Opts); @@ -2159,7 +2158,7 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const { getDeploymentTargetFromEnvironmentVariables(getDriver(), getTriple()); if (OSTarget) { // Don't infer simulator from the arch when the SDK is also specified. - Optional<DarwinPlatform> SDKTarget = + std::optional<DarwinPlatform> SDKTarget = inferDeploymentTargetFromSDK(Args, SDKInfo); if (SDKTarget) OSTarget->setEnvironment(SDKTarget->getEnvironment()); @@ -2829,7 +2828,7 @@ void Darwin::addClangCC1ASTargetOptions( if (isTargetMacCatalyst()) { if (const auto *MacOStoMacCatalystMapping = SDKInfo->getVersionMapping( DarwinSDKInfo::OSEnvPair::macOStoMacCatalystPair())) { - Optional<VersionTuple> SDKVersion = MacOStoMacCatalystMapping->map( + std::optional<VersionTuple> SDKVersion = MacOStoMacCatalystMapping->map( SDKInfo->getVersion(), minimumMacCatalystDeploymentTarget(), std::nullopt); EmitTargetSDKVersionArg( @@ -2850,9 +2849,10 @@ void Darwin::addClangCC1ASTargetOptions( } else if (const auto *MacOStoMacCatalystMapping = SDKInfo->getVersionMapping( DarwinSDKInfo::OSEnvPair::macOStoMacCatalystPair())) { - if (Optional<VersionTuple> SDKVersion = MacOStoMacCatalystMapping->map( - SDKInfo->getVersion(), minimumMacCatalystDeploymentTarget(), - std::nullopt)) { + if (std::optional<VersionTuple> SDKVersion = + MacOStoMacCatalystMapping->map( + SDKInfo->getVersion(), minimumMacCatalystDeploymentTarget(), + std::nullopt)) { std::string Arg; llvm::raw_string_ostream OS(Arg); OS << "-darwin-target-variant-sdk-version=" << *SDKVersion; @@ -3091,7 +3091,7 @@ void Darwin::addPlatformVersionArgs(const llvm::opt::ArgList &Args, if (TargetPlatform == IPhoneOS && TargetEnvironment == MacCatalyst) { // Mac Catalyst programs must use the appropriate iOS SDK version // that corresponds to the macOS SDK version used for the compilation. - Optional<VersionTuple> iOSSDKVersion; + std::optional<VersionTuple> iOSSDKVersion; if (SDKInfo) { if (const auto *MacOStoMacCatalystMapping = SDKInfo->getVersionMapping( diff --git a/clang/lib/Driver/ToolChains/Darwin.h b/clang/lib/Driver/ToolChains/Darwin.h index ecf8b8747529d..f64e7180d0af9 100644 --- a/clang/lib/Driver/ToolChains/Darwin.h +++ b/clang/lib/Driver/ToolChains/Darwin.h @@ -148,7 +148,7 @@ class LLVM_LIBRARY_VISIBILITY MachO : public ToolChain { mutable std::unique_ptr<tools::darwin::VerifyDebug> VerifyDebug; /// The version of the linker known to be available in the tool chain. - mutable Optional<VersionTuple> LinkerVersion; + mutable std::optional<VersionTuple> LinkerVersion; public: MachO(const Driver &D, const llvm::Triple &Triple, @@ -318,10 +318,10 @@ class LLVM_LIBRARY_VISIBILITY Darwin : public MachO { mutable VersionTuple OSTargetVersion; /// The information about the darwin SDK that was used. - mutable Optional<DarwinSDKInfo> SDKInfo; + mutable std::optional<DarwinSDKInfo> SDKInfo; /// The target variant triple that was specified (if any). - mutable Optional<llvm::Triple> TargetVariantTriple; + mutable std::optional<llvm::Triple> TargetVariantTriple; CudaInstallationDetector CudaInstallation; RocmInstallationDetector RocmInstallation; diff --git a/clang/lib/Driver/ToolChains/Gnu.cpp b/clang/lib/Driver/ToolChains/Gnu.cpp index 8236451b96c8d..4621850f13772 100644 --- a/clang/lib/Driver/ToolChains/Gnu.cpp +++ b/clang/lib/Driver/ToolChains/Gnu.cpp @@ -1623,7 +1623,8 @@ static void findCSKYMultilibs(const Driver &D, const llvm::Triple &TargetTriple, FilterNonExistent NonExistent(Path, "/crtbegin.o", D.getVFS()); tools::csky::FloatABI TheFloatABI = tools::csky::getCSKYFloatABI(D, Args); - llvm::Optional<llvm::StringRef> Res = tools::csky::getCSKYArchName(D, Args, TargetTriple); + std::optional<llvm::StringRef> Res = + tools::csky::getCSKYArchName(D, Args, TargetTriple); if (!Res) return; diff --git a/clang/lib/Driver/ToolChains/Gnu.h b/clang/lib/Driver/ToolChains/Gnu.h index 7199e0ba9d6c5..b8610724103bd 100644 --- a/clang/lib/Driver/ToolChains/Gnu.h +++ b/clang/lib/Driver/ToolChains/Gnu.h @@ -27,7 +27,7 @@ struct DetectedMultilibs { /// On Biarch systems, this corresponds to the default multilib when /// targeting the non-default multilib. Otherwise, it is empty. - llvm::Optional<Multilib> BiarchSibling; + std::optional<Multilib> BiarchSibling; }; bool findMIPSMultilibs(const Driver &D, const llvm::Triple &TargetTriple, @@ -201,7 +201,7 @@ class LLVM_LIBRARY_VISIBILITY Generic_GCC : public ToolChain { Multilib SelectedMultilib; /// On Biarch systems, this corresponds to the default multilib when /// targeting the non-default multilib. Otherwise, it is empty. - llvm::Optional<Multilib> BiarchSibling; + std::optional<Multilib> BiarchSibling; GCCVersion Version; diff --git a/clang/lib/Driver/ToolChains/HLSL.cpp b/clang/lib/Driver/ToolChains/HLSL.cpp index a3ad9ba24e162..174146145777b 100644 --- a/clang/lib/Driver/ToolChains/HLSL.cpp +++ b/clang/lib/Driver/ToolChains/HLSL.cpp @@ -64,7 +64,7 @@ bool isLegalShaderModel(Triple &T) { return false; } -llvm::Optional<std::string> tryParseProfile(StringRef Profile) { +std::optional<std::string> tryParseProfile(StringRef Profile) { // [ps|vs|gs|hs|ds|cs|ms|as]_[major]_[minor] SmallVector<StringRef, 3> Parts; Profile.split(Parts, "_"); @@ -138,7 +138,7 @@ HLSLToolChain::HLSLToolChain(const Driver &D, const llvm::Triple &Triple, const ArgList &Args) : ToolChain(D, Triple, Args) {} -llvm::Optional<std::string> +std::optional<std::string> clang::driver::toolchains::HLSLToolChain::parseTargetProfile( StringRef TargetProfile) { return tryParseProfile(TargetProfile); diff --git a/clang/lib/Driver/ToolChains/HLSL.h b/clang/lib/Driver/ToolChains/HLSL.h index 5573b0cc69e25..47eefdc242388 100644 --- a/clang/lib/Driver/ToolChains/HLSL.h +++ b/clang/lib/Driver/ToolChains/HLSL.h @@ -29,8 +29,7 @@ class LLVM_LIBRARY_VISIBILITY HLSLToolChain : public ToolChain { llvm::opt::DerivedArgList * TranslateArgs(const llvm::opt::DerivedArgList &Args, StringRef BoundArch, Action::OffloadKind DeviceOffloadKind) const override; - static llvm::Optional<std::string> - parseTargetProfile(StringRef TargetProfile); + static std::optional<std::string> parseTargetProfile(StringRef TargetProfile); }; } // end namespace toolchains diff --git a/clang/lib/Driver/ToolChains/Hexagon.cpp b/clang/lib/Driver/ToolChains/Hexagon.cpp index ba5d468a063bb..86c345013fde3 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.cpp +++ b/clang/lib/Driver/ToolChains/Hexagon.cpp @@ -120,9 +120,10 @@ static void handleHVXTargetFeatures(const Driver &D, const ArgList &Args, HvxVerNum = 0; // Handle HVX floating point flags. - auto checkFlagHvxVersion = [&](auto FlagOn, auto FlagOff, - unsigned MinVerNum) -> Optional<StringRef> { - // Return an Optional<StringRef>: + auto checkFlagHvxVersion = + [&](auto FlagOn, auto FlagOff, + unsigned MinVerNum) -> std::optional<StringRef> { + // Return an std::optional<StringRef>: // - None indicates a verification failure, or that the flag was not // present in Args. // - Otherwise the returned value is that name of the feature to add @@ -519,8 +520,8 @@ std::string HexagonToolChain::getHexagonTargetDir( return InstalledDir; } -Optional<unsigned> HexagonToolChain::getSmallDataThreshold( - const ArgList &Args) { +std::optional<unsigned> +HexagonToolChain::getSmallDataThreshold(const ArgList &Args) { StringRef Gn = ""; if (Arg *A = Args.getLastArg(options::OPT_G)) { Gn = A->getValue(); diff --git a/clang/lib/Driver/ToolChains/Hexagon.h b/clang/lib/Driver/ToolChains/Hexagon.h index c742012444b44..47a3304c46ae6 100644 --- a/clang/lib/Driver/ToolChains/Hexagon.h +++ b/clang/lib/Driver/ToolChains/Hexagon.h @@ -107,8 +107,8 @@ class LLVM_LIBRARY_VISIBILITY HexagonToolChain : public Linux { static StringRef GetDefaultCPU(); static StringRef GetTargetCPUVersion(const llvm::opt::ArgList &Args); - static Optional<unsigned> getSmallDataThreshold( - const llvm::opt::ArgList &Args); + static std::optional<unsigned> + getSmallDataThreshold(const llvm::opt::ArgList &Args); }; } // end namespace toolchains diff --git a/clang/lib/Driver/ToolChains/MSVC.cpp b/clang/lib/Driver/ToolChains/MSVC.cpp index 7e549bfbdffa4..8ad67ca3e13f2 100644 --- a/clang/lib/Driver/ToolChains/MSVC.cpp +++ b/clang/lib/Driver/ToolChains/MSVC.cpp @@ -410,7 +410,7 @@ MSVCToolChain::MSVCToolChain(const Driver &D, const llvm::Triple &Triple, if (getDriver().getInstalledDir() != getDriver().Dir) getProgramPaths().push_back(getDriver().Dir); - Optional<llvm::StringRef> VCToolsDir, VCToolsVersion; + std::optional<llvm::StringRef> VCToolsDir, VCToolsVersion; if (Arg *A = Args.getLastArg(options::OPT__SLASH_vctoolsdir)) VCToolsDir = A->getValue(); if (Arg *A = Args.getLastArg(options::OPT__SLASH_vctoolsversion)) diff --git a/clang/lib/Driver/ToolChains/MSVC.h b/clang/lib/Driver/ToolChains/MSVC.h index a3e94db1fc848..2826ee6aee284 100644 --- a/clang/lib/Driver/ToolChains/MSVC.h +++ b/clang/lib/Driver/ToolChains/MSVC.h @@ -133,7 +133,7 @@ class LLVM_LIBRARY_VISIBILITY MSVCToolChain : public ToolChain { Tool *buildLinker() const override; Tool *buildAssembler() const override; private: - llvm::Optional<llvm::StringRef> WinSdkDir, WinSdkVersion, WinSysRoot; + std::optional<llvm::StringRef> WinSdkDir, WinSdkVersion, WinSysRoot; std::string VCToolChainPath; llvm::ToolsetLayout VSLayout = llvm::ToolsetLayout::OlderVS; CudaInstallationDetector CudaInstallation; diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 46153838e5f48..4032e96f0f6b5 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -2795,7 +2795,7 @@ static void handleAvailabilityAttr(Sema &S, Decl *D, const ParsedAttr &AL) { // attributes that are inferred from 'ios'. NewII = &S.Context.Idents.get("maccatalyst"); auto RemapMacOSVersion = - [&](const VersionTuple &V) -> Optional<VersionTuple> { + [&](const VersionTuple &V) -> std::optional<VersionTuple> { if (V.empty()) return std::nullopt; // API_TO_BE_DEPRECATED is 100000. @@ -2805,15 +2805,15 @@ static void handleAvailabilityAttr(Sema &S, Decl *D, const ParsedAttr &AL) { return MacOStoMacCatalystMapping->map(V, VersionTuple(13, 1), std::nullopt); }; - Optional<VersionTuple> NewIntroduced = - RemapMacOSVersion(Introduced.Version), - NewDeprecated = - RemapMacOSVersion(Deprecated.Version), - NewObsoleted = - RemapMacOSVersion(Obsoleted.Version); + std::optional<VersionTuple> NewIntroduced = + RemapMacOSVersion(Introduced.Version), + NewDeprecated = + RemapMacOSVersion(Deprecated.Version), + NewObsoleted = + RemapMacOSVersion(Obsoleted.Version); if (NewIntroduced || NewDeprecated || NewObsoleted) { auto VersionOrEmptyVersion = - [](const Optional<VersionTuple> &V) -> VersionTuple { + [](const std::optional<VersionTuple> &V) -> VersionTuple { return V ? *V : VersionTuple(); }; AvailabilityAttr *NewAttr = S.mergeAvailabilityAttr( diff --git a/llvm/include/llvm/WindowsDriver/MSVCPaths.h b/llvm/include/llvm/WindowsDriver/MSVCPaths.h index 66c93cd55e203..414e0967bd07f 100644 --- a/llvm/include/llvm/WindowsDriver/MSVCPaths.h +++ b/llvm/include/llvm/WindowsDriver/MSVCPaths.h @@ -13,6 +13,7 @@ #include "llvm/ADT/SmallString.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/Triple.h" +#include <optional> #include <string> namespace llvm { @@ -65,25 +66,24 @@ bool useUniversalCRT(ToolsetLayout VSLayout, const std::string &VCToolChainPath, /// Get Windows SDK installation directory. bool getWindowsSDKDir(vfs::FileSystem &VFS, - llvm::Optional<llvm::StringRef> WinSdkDir, - llvm::Optional<llvm::StringRef> WinSdkVersion, - llvm::Optional<llvm::StringRef> WinSysRoot, + std::optional<llvm::StringRef> WinSdkDir, + std::optional<llvm::StringRef> WinSdkVersion, + std::optional<llvm::StringRef> WinSysRoot, std::string &Path, int &Major, std::string &WindowsSDKIncludeVersion, std::string &WindowsSDKLibVersion); bool getUniversalCRTSdkDir(vfs::FileSystem &VFS, - llvm::Optional<llvm::StringRef> WinSdkDir, - llvm::Optional<llvm::StringRef> WinSdkVersion, - llvm::Optional<llvm::StringRef> WinSysRoot, - std::string &Path, - std::string &UCRTVersion); + std::optional<llvm::StringRef> WinSdkDir, + std::optional<llvm::StringRef> WinSdkVersion, + std::optional<llvm::StringRef> WinSysRoot, + std::string &Path, std::string &UCRTVersion); // Check command line arguments to try and find a toolchain. bool findVCToolChainViaCommandLine( - vfs::FileSystem &VFS, llvm::Optional<llvm::StringRef> VCToolsDir, - llvm::Optional<llvm::StringRef> VCToolsVersion, - llvm::Optional<llvm::StringRef> WinSysRoot, std::string &Path, + vfs::FileSystem &VFS, std::optional<llvm::StringRef> VCToolsDir, + std::optional<llvm::StringRef> VCToolsVersion, + std::optional<llvm::StringRef> WinSysRoot, std::string &Path, ToolsetLayout &VSLayout); // Check various environment variables to try and find a toolchain. diff --git a/llvm/lib/WindowsDriver/MSVCPaths.cpp b/llvm/lib/WindowsDriver/MSVCPaths.cpp index 0661ed7c6ae12..36a6096bc3886 100644 --- a/llvm/lib/WindowsDriver/MSVCPaths.cpp +++ b/llvm/lib/WindowsDriver/MSVCPaths.cpp @@ -94,9 +94,9 @@ static bool getWindows10SDKVersionFromPath(llvm::vfs::FileSystem &VFS, } static bool getWindowsSDKDirViaCommandLine( - llvm::vfs::FileSystem &VFS, llvm::Optional<llvm::StringRef> WinSdkDir, - llvm::Optional<llvm::StringRef> WinSdkVersion, - llvm::Optional<llvm::StringRef> WinSysRoot, std::string &Path, int &Major, + llvm::vfs::FileSystem &VFS, std::optional<llvm::StringRef> WinSdkDir, + std::optional<llvm::StringRef> WinSdkVersion, + std::optional<llvm::StringRef> WinSysRoot, std::string &Path, int &Major, std::string &Version) { if (WinSdkDir || WinSysRoot) { // Don't validate the input; trust the value supplied by the user. @@ -393,9 +393,9 @@ bool useUniversalCRT(ToolsetLayout VSLayout, const std::string &VCToolChainPath, return !VFS.exists(TestPath); } -bool getWindowsSDKDir(vfs::FileSystem &VFS, Optional<StringRef> WinSdkDir, - Optional<StringRef> WinSdkVersion, - Optional<StringRef> WinSysRoot, std::string &Path, +bool getWindowsSDKDir(vfs::FileSystem &VFS, std::optional<StringRef> WinSdkDir, + std::optional<StringRef> WinSdkVersion, + std::optional<StringRef> WinSysRoot, std::string &Path, int &Major, std::string &WindowsSDKIncludeVersion, std::string &WindowsSDKLibVersion) { // Trust /winsdkdir and /winsdkversion if present. @@ -448,10 +448,11 @@ bool getWindowsSDKDir(vfs::FileSystem &VFS, Optional<StringRef> WinSdkDir, return false; } -bool getUniversalCRTSdkDir(vfs::FileSystem &VFS, Optional<StringRef> WinSdkDir, - Optional<StringRef> WinSdkVersion, - Optional<StringRef> WinSysRoot, std::string &Path, - std::string &UCRTVersion) { +bool getUniversalCRTSdkDir(vfs::FileSystem &VFS, + std::optional<StringRef> WinSdkDir, + std::optional<StringRef> WinSdkVersion, + std::optional<StringRef> WinSysRoot, + std::string &Path, std::string &UCRTVersion) { // If /winsdkdir is passed, use it as location for the UCRT too. // FIXME: Should there be a dedicated /ucrtdir to override /winsdkdir? int Major; @@ -473,9 +474,9 @@ bool getUniversalCRTSdkDir(vfs::FileSystem &VFS, Optional<StringRef> WinSdkDir, } bool findVCToolChainViaCommandLine(vfs::FileSystem &VFS, - Optional<StringRef> VCToolsDir, - Optional<StringRef> VCToolsVersion, - Optional<StringRef> WinSysRoot, + std::optional<StringRef> VCToolsDir, + std::optional<StringRef> VCToolsVersion, + std::optional<StringRef> WinSysRoot, std::string &Path, ToolsetLayout &VSLayout) { // Don't validate the input; trust the value supplied by the user. // The primary motivation is to prevent unnecessary file and registry access. _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits