[clang] 0ca43d4 - DebugInfoMetadata: convert Optional to std::optional
Krzysztof Parzyszek via cfe-commits
cfe-commits at lists.llvm.org
Sun Dec 4 09:54:06 PST 2022
Author: Krzysztof Parzyszek
Date: 2022-12-04T11:52:02-06:00
New Revision: 0ca43d44888885d6caf7636db91fe810e822263c
URL: https://github.com/llvm/llvm-project/commit/0ca43d44888885d6caf7636db91fe810e822263c
DIFF: https://github.com/llvm/llvm-project/commit/0ca43d44888885d6caf7636db91fe810e822263c.diff
LOG: DebugInfoMetadata: convert Optional to std::optional
Added:
Modified:
clang/include/clang/Basic/TargetInfo.h
clang/lib/Basic/Targets/AMDGPU.h
clang/lib/Basic/Targets/NVPTX.h
clang/lib/Basic/Targets/SPIR.h
clang/lib/CodeGen/CGDebugInfo.cpp
clang/lib/CodeGen/CGDebugInfo.h
llvm/include/llvm/IR/DIBuilder.h
llvm/include/llvm/IR/DebugInfoMetadata.h
llvm/include/llvm/IR/IntrinsicInst.h
llvm/include/llvm/MC/MCContext.h
llvm/include/llvm/MC/MCDwarf.h
llvm/include/llvm/MC/MCStreamer.h
llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h
llvm/lib/AsmParser/LLParser.cpp
llvm/lib/Bitcode/Reader/MetadataLoader.cpp
llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h
llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h
llvm/lib/CodeGen/LiveDebugValues/VarLocBasedImpl.cpp
llvm/lib/CodeGen/LiveDebugVariables.cpp
llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
llvm/lib/IR/DIBuilder.cpp
llvm/lib/IR/DebugInfoMetadata.cpp
llvm/lib/IR/IntrinsicInst.cpp
llvm/lib/IR/LLVMContextImpl.h
llvm/lib/IR/Verifier.cpp
llvm/lib/MC/MCAsmStreamer.cpp
llvm/lib/MC/MCContext.cpp
llvm/lib/MC/MCDwarf.cpp
llvm/lib/MC/MCParser/AsmParser.cpp
llvm/lib/MC/MCParser/MasmParser.cpp
llvm/lib/MC/MCStreamer.cpp
llvm/lib/Target/X86/X86DiscriminateMemOps.cpp
llvm/lib/Transforms/Utils/Debugify.cpp
llvm/lib/Transforms/Utils/Local.cpp
llvm/lib/Transforms/Utils/MemoryOpRemark.cpp
llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
llvm/unittests/IR/MetadataTest.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Basic/TargetInfo.h b/clang/include/clang/Basic/TargetInfo.h
index 20813d91dfad..f4b7581fd531 100644
--- a/clang/include/clang/Basic/TargetInfo.h
+++ b/clang/include/clang/Basic/TargetInfo.h
@@ -37,6 +37,7 @@
#include "llvm/Support/Error.h"
#include "llvm/Support/VersionTuple.h"
#include <cassert>
+#include <optional>
#include <string>
#include <vector>
@@ -1654,7 +1655,8 @@ class TargetInfo : public virtual TransferrableTargetInfo,
///
/// \returns Otherwise return None and no conversion will be emitted in the
/// DWARF.
- virtual Optional<unsigned> getDWARFAddressSpace(unsigned AddressSpace) const {
+ virtual std::optional<unsigned> getDWARFAddressSpace(unsigned AddressSpace)
+ const {
return std::nullopt;
}
diff --git a/clang/lib/Basic/Targets/AMDGPU.h b/clang/lib/Basic/Targets/AMDGPU.h
index e9bda7570f00..35674ce2ff53 100644
--- a/clang/lib/Basic/Targets/AMDGPU.h
+++ b/clang/lib/Basic/Targets/AMDGPU.h
@@ -20,6 +20,7 @@
#include "llvm/ADT/Triple.h"
#include "llvm/Support/Compiler.h"
#include "llvm/Support/TargetParser.h"
+#include <optional>
namespace clang {
namespace targets {
@@ -393,7 +394,7 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUTargetInfo final : public TargetInfo {
///
/// \returns Otherwise return None and no conversion will be emitted in the
/// DWARF.
- Optional<unsigned>
+ std::optional<unsigned>
getDWARFAddressSpace(unsigned AddressSpace) const override {
const unsigned DWARF_Private = 1;
const unsigned DWARF_Local = 2;
diff --git a/clang/lib/Basic/Targets/NVPTX.h b/clang/lib/Basic/Targets/NVPTX.h
index 79f4cbe5d169..f62d86fe99aa 100644
--- a/clang/lib/Basic/Targets/NVPTX.h
+++ b/clang/lib/Basic/Targets/NVPTX.h
@@ -18,6 +18,7 @@
#include "clang/Basic/TargetOptions.h"
#include "llvm/ADT/Triple.h"
#include "llvm/Support/Compiler.h"
+#include <optional>
namespace clang {
namespace targets {
@@ -158,7 +159,7 @@ class LLVM_LIBRARY_VISIBILITY NVPTXTargetInfo : public TargetInfo {
///
/// \returns Otherwise return None and no conversion will be emitted in the
/// DWARF.
- Optional<unsigned>
+ std::optional<unsigned>
getDWARFAddressSpace(unsigned AddressSpace) const override {
if (AddressSpace >= std::size(NVPTXDWARFAddrSpaceMap) ||
NVPTXDWARFAddrSpaceMap[AddressSpace] < 0)
diff --git a/clang/lib/Basic/Targets/SPIR.h b/clang/lib/Basic/Targets/SPIR.h
index 17db3b1ba3a0..69596c6eb6fe 100644
--- a/clang/lib/Basic/Targets/SPIR.h
+++ b/clang/lib/Basic/Targets/SPIR.h
@@ -17,6 +17,7 @@
#include "clang/Basic/TargetOptions.h"
#include "llvm/ADT/Triple.h"
#include "llvm/Support/Compiler.h"
+#include <optional>
namespace clang {
namespace targets {
@@ -127,7 +128,7 @@ class LLVM_LIBRARY_VISIBILITY BaseSPIRTargetInfo : public TargetInfo {
return TargetInfo::VoidPtrBuiltinVaList;
}
- Optional<unsigned>
+ std::optional<unsigned>
getDWARFAddressSpace(unsigned AddressSpace) const override {
return AddressSpace;
}
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp
index 12b74ee01ed1..b0fe96d6b8a0 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -51,6 +51,7 @@
#include "llvm/Support/SHA1.h"
#include "llvm/Support/SHA256.h"
#include "llvm/Support/TimeProfiler.h"
+#include <optional>
using namespace clang;
using namespace clang::CodeGen;
@@ -345,7 +346,7 @@ StringRef CGDebugInfo::getClassName(const RecordDecl *RD) {
return StringRef();
}
-Optional<llvm::DIFile::ChecksumKind>
+std::optional<llvm::DIFile::ChecksumKind>
CGDebugInfo::computeChecksum(FileID FID, SmallString<64> &Checksum) const {
Checksum.clear();
@@ -373,8 +374,8 @@ CGDebugInfo::computeChecksum(FileID FID, SmallString<64> &Checksum) const {
llvm_unreachable("Unhandled DebugSrcHashKind enum");
}
-Optional<StringRef> CGDebugInfo::getSource(const SourceManager &SM,
- FileID FID) {
+std::optional<StringRef> CGDebugInfo::getSource(const SourceManager &SM,
+ FileID FID) {
if (!CGM.getCodeGenOpts().EmbedSource)
return std::nullopt;
@@ -419,17 +420,18 @@ llvm::DIFile *CGDebugInfo::getOrCreateFile(SourceLocation Loc) {
SmallString<64> Checksum;
- Optional<llvm::DIFile::ChecksumKind> CSKind = computeChecksum(FID, Checksum);
- Optional<llvm::DIFile::ChecksumInfo<StringRef>> CSInfo;
+ std::optional<llvm::DIFile::ChecksumKind> CSKind =
+ computeChecksum(FID, Checksum);
+ std::optional<llvm::DIFile::ChecksumInfo<StringRef>> CSInfo;
if (CSKind)
CSInfo.emplace(*CSKind, Checksum);
return createFile(FileName, CSInfo, getSource(SM, SM.getFileID(Loc)));
}
-llvm::DIFile *
-CGDebugInfo::createFile(StringRef FileName,
- Optional<llvm::DIFile::ChecksumInfo<StringRef>> CSInfo,
- Optional<StringRef> Source) {
+llvm::DIFile *CGDebugInfo::createFile(
+ StringRef FileName,
+ std::optional<llvm::DIFile::ChecksumInfo<StringRef>> CSInfo,
+ std::optional<StringRef> Source) {
StringRef Dir;
StringRef File;
std::string RemappedFile = remapDIPath(FileName);
@@ -512,8 +514,8 @@ StringRef CGDebugInfo::getCurrentDirname() {
void CGDebugInfo::CreateCompileUnit() {
SmallString<64> Checksum;
- Optional<llvm::DIFile::ChecksumKind> CSKind;
- Optional<llvm::DIFile::ChecksumInfo<StringRef>> CSInfo;
+ std::optional<llvm::DIFile::ChecksumKind> CSKind;
+ std::optional<llvm::DIFile::ChecksumInfo<StringRef>> CSInfo;
// Should we be asking the SourceManager for the main file name, instead of
// accepting it as an argument? This just causes the main file name to
@@ -1148,8 +1150,9 @@ llvm::DIType *CGDebugInfo::CreatePointerLikeType(llvm::dwarf::Tag Tag,
// Size is always the size of a pointer.
uint64_t Size = CGM.getContext().getTypeSize(Ty);
auto Align = getTypeAlignIfRequired(Ty, CGM.getContext());
- Optional<unsigned> DWARFAddressSpace = CGM.getTarget().getDWARFAddressSpace(
- CGM.getTypes().getTargetAddressSpace(PointeeTy));
+ std::optional<unsigned> DWARFAddressSpace =
+ CGM.getTarget().getDWARFAddressSpace(
+ CGM.getTypes().getTargetAddressSpace(PointeeTy));
SmallVector<llvm::Metadata *, 4> Annots;
auto *BTFAttrTy = dyn_cast<BTFTagAttributedType>(PointeeTy);
@@ -2201,7 +2204,7 @@ llvm::DIType *CGDebugInfo::getOrCreateVTablePtrType(llvm::DIFile *Unit) {
llvm::DIType *SubTy = DBuilder.createSubroutineType(SElements);
unsigned Size = Context.getTypeSize(Context.VoidPtrTy);
unsigned VtblPtrAddressSpace = CGM.getTarget().getVtblPtrAddressSpace();
- Optional<unsigned> DWARFAddressSpace =
+ std::optional<unsigned> DWARFAddressSpace =
CGM.getTarget().getDWARFAddressSpace(VtblPtrAddressSpace);
llvm::DIType *vtbl_ptr_type = DBuilder.createPointerType(
@@ -2298,7 +2301,7 @@ void CGDebugInfo::CollectVTableInfo(const CXXRecordDecl *RD, llvm::DIFile *Unit,
VFTLayout.vtable_components().size() - CGM.getLangOpts().RTTIData;
unsigned VTableWidth = PtrWidth * VSlotCount;
unsigned VtblPtrAddressSpace = CGM.getTarget().getVtblPtrAddressSpace();
- Optional<unsigned> DWARFAddressSpace =
+ std::optional<unsigned> DWARFAddressSpace =
CGM.getTarget().getDWARFAddressSpace(VtblPtrAddressSpace);
// Create a very wide void* type and insert it directly in the element list.
@@ -4284,7 +4287,7 @@ void CGDebugInfo::CreateLexicalBlock(SourceLocation Loc) {
void CGDebugInfo::AppendAddressSpaceXDeref(
unsigned AddressSpace, SmallVectorImpl<uint64_t> &Expr) const {
- Optional<unsigned> DWARFAddressSpace =
+ std::optional<unsigned> DWARFAddressSpace =
CGM.getTarget().getDWARFAddressSpace(AddressSpace);
if (!DWARFAddressSpace)
return;
diff --git a/clang/lib/CodeGen/CGDebugInfo.h b/clang/lib/CodeGen/CGDebugInfo.h
index c675ff8ce7d9..9d54832fd655 100644
--- a/clang/lib/CodeGen/CGDebugInfo.h
+++ b/clang/lib/CodeGen/CGDebugInfo.h
@@ -30,6 +30,7 @@
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/ValueHandle.h"
#include "llvm/Support/Allocator.h"
+#include <optional>
namespace llvm {
class MDNode;
@@ -630,11 +631,11 @@ class CGDebugInfo {
void CreateCompileUnit();
/// Compute the file checksum debug info for input file ID.
- Optional<llvm::DIFile::ChecksumKind>
+ std::optional<llvm::DIFile::ChecksumKind>
computeChecksum(FileID FID, SmallString<64> &Checksum) const;
/// Get the source of the given file ID.
- Optional<StringRef> getSource(const SourceManager &SM, FileID FID);
+ std::optional<StringRef> getSource(const SourceManager &SM, FileID FID);
/// Convenience function to get the file debug info descriptor for the input
/// location.
@@ -643,8 +644,8 @@ class CGDebugInfo {
/// Create a file debug info descriptor for a source file.
llvm::DIFile *
createFile(StringRef FileName,
- Optional<llvm::DIFile::ChecksumInfo<StringRef>> CSInfo,
- Optional<StringRef> Source);
+ std::optional<llvm::DIFile::ChecksumInfo<StringRef>> CSInfo,
+ std::optional<StringRef> Source);
/// Get the type from the cache or create a new type if necessary.
llvm::DIType *getOrCreateType(QualType Ty, llvm::DIFile *Fg);
diff --git a/llvm/include/llvm/IR/DIBuilder.h b/llvm/include/llvm/IR/DIBuilder.h
index 81ead0cf067d..2898d481c3c2 100644
--- a/llvm/include/llvm/IR/DIBuilder.h
+++ b/llvm/include/llvm/IR/DIBuilder.h
@@ -17,7 +17,6 @@
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/MapVector.h"
-#include "llvm/ADT/Optional.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
@@ -27,6 +26,7 @@
#include "llvm/Support/Casting.h"
#include <algorithm>
#include <cstdint>
+#include <optional>
namespace llvm {
@@ -175,8 +175,8 @@ namespace llvm {
/// \param Source Optional source text.
DIFile *createFile(
StringRef Filename, StringRef Directory,
- Optional<DIFile::ChecksumInfo<StringRef>> Checksum = std::nullopt,
- Optional<StringRef> Source = std::nullopt);
+ std::optional<DIFile::ChecksumInfo<StringRef>> Checksum = std::nullopt,
+ std::optional<StringRef> Source = std::nullopt);
/// Create debugging information entry for a macro.
/// \param Parent Macro parent (could be nullptr).
@@ -256,7 +256,7 @@ namespace llvm {
DIDerivedType *
createPointerType(DIType *PointeeTy, uint64_t SizeInBits,
uint32_t AlignInBits = 0,
- Optional<unsigned> DWARFAddressSpace = std::nullopt,
+ std::optional<unsigned> DWARFAddressSpace = std::nullopt,
StringRef Name = "", DINodeArray Annotations = nullptr);
/// Create debugging information entry for a pointer to member.
@@ -271,10 +271,10 @@ namespace llvm {
/// Create debugging information entry for a c++
/// style reference or rvalue reference type.
- DIDerivedType *
- createReferenceType(unsigned Tag, DIType *RTy, uint64_t SizeInBits = 0,
- uint32_t AlignInBits = 0,
- Optional<unsigned> DWARFAddressSpace = std::nullopt);
+ DIDerivedType *createReferenceType(
+ unsigned Tag, DIType *RTy, uint64_t SizeInBits = 0,
+ uint32_t AlignInBits = 0,
+ std::optional<unsigned> DWARFAddressSpace = std::nullopt);
/// Create debugging information entry for a typedef.
/// \param Ty Original type.
diff --git a/llvm/include/llvm/IR/DebugInfoMetadata.h b/llvm/include/llvm/IR/DebugInfoMetadata.h
index c4d60fbaef59..9aef251613aa 100644
--- a/llvm/include/llvm/IR/DebugInfoMetadata.h
+++ b/llvm/include/llvm/IR/DebugInfoMetadata.h
@@ -16,7 +16,6 @@
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitmaskEnum.h"
#include "llvm/ADT/None.h"
-#include "llvm/ADT/Optional.h"
#include "llvm/ADT/PointerUnion.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallVector.h"
@@ -32,6 +31,7 @@
#include <cstddef>
#include <cstdint>
#include <iterator>
+#include <optional>
#include <vector>
// Helper macros for defining get() overrides.
@@ -518,7 +518,7 @@ class DIScope : public DINode {
inline StringRef getFilename() const;
inline StringRef getDirectory() const;
- inline Optional<StringRef> getSource() const;
+ inline std::optional<StringRef> getSource() const;
StringRef getName() const;
DIScope *getScope() const;
@@ -597,33 +597,33 @@ class DIFile : public DIScope {
};
private:
- Optional<ChecksumInfo<MDString *>> Checksum;
- Optional<MDString *> Source;
+ std::optional<ChecksumInfo<MDString *>> Checksum;
+ std::optional<MDString *> Source;
DIFile(LLVMContext &C, StorageType Storage,
- Optional<ChecksumInfo<MDString *>> CS, Optional<MDString *> Src,
- ArrayRef<Metadata *> Ops);
+ std::optional<ChecksumInfo<MDString *>> CS,
+ std::optional<MDString *> Src, ArrayRef<Metadata *> Ops);
~DIFile() = default;
static DIFile *getImpl(LLVMContext &Context, StringRef Filename,
StringRef Directory,
- Optional<ChecksumInfo<StringRef>> CS,
- Optional<StringRef> Source, StorageType Storage,
+ std::optional<ChecksumInfo<StringRef>> CS,
+ std::optional<StringRef> Source, StorageType Storage,
bool ShouldCreate = true) {
- Optional<ChecksumInfo<MDString *>> MDChecksum;
+ std::optional<ChecksumInfo<MDString *>> MDChecksum;
if (CS)
MDChecksum.emplace(CS->Kind, getCanonicalMDString(Context, CS->Value));
- return getImpl(
- Context, getCanonicalMDString(Context, Filename),
- getCanonicalMDString(Context, Directory), MDChecksum,
- Source ? Optional<MDString *>(getCanonicalMDString(Context, *Source))
- : std::nullopt,
- Storage, ShouldCreate);
+ return getImpl(Context, getCanonicalMDString(Context, Filename),
+ getCanonicalMDString(Context, Directory), MDChecksum,
+ Source ? std::optional<MDString *>(
+ getCanonicalMDString(Context, *Source))
+ : std::nullopt,
+ Storage, ShouldCreate);
}
static DIFile *getImpl(LLVMContext &Context, MDString *Filename,
MDString *Directory,
- Optional<ChecksumInfo<MDString *>> CS,
- Optional<MDString *> Source, StorageType Storage,
+ std::optional<ChecksumInfo<MDString *>> CS,
+ std::optional<MDString *> Source, StorageType Storage,
bool ShouldCreate = true);
TempDIFile cloneImpl() const {
@@ -634,36 +634,39 @@ class DIFile : public DIScope {
public:
DEFINE_MDNODE_GET(DIFile,
(StringRef Filename, StringRef Directory,
- Optional<ChecksumInfo<StringRef>> CS = std::nullopt,
- Optional<StringRef> Source = std::nullopt),
+ std::optional<ChecksumInfo<StringRef>> CS = std::nullopt,
+ std::optional<StringRef> Source = std::nullopt),
(Filename, Directory, CS, Source))
DEFINE_MDNODE_GET(DIFile,
(MDString * Filename, MDString *Directory,
- Optional<ChecksumInfo<MDString *>> CS = std::nullopt,
- Optional<MDString *> Source = std::nullopt),
+ std::optional<ChecksumInfo<MDString *>> CS = std::nullopt,
+ std::optional<MDString *> Source = std::nullopt),
(Filename, Directory, CS, Source))
TempDIFile clone() const { return cloneImpl(); }
StringRef getFilename() const { return getStringOperand(0); }
StringRef getDirectory() const { return getStringOperand(1); }
- Optional<ChecksumInfo<StringRef>> getChecksum() const {
- Optional<ChecksumInfo<StringRef>> StringRefChecksum;
+ std::optional<ChecksumInfo<StringRef>> getChecksum() const {
+ std::optional<ChecksumInfo<StringRef>> StringRefChecksum;
if (Checksum)
StringRefChecksum.emplace(Checksum->Kind, Checksum->Value->getString());
return StringRefChecksum;
}
- Optional<StringRef> getSource() const {
- return Source ? Optional<StringRef>((*Source)->getString()) : std::nullopt;
+ std::optional<StringRef> getSource() const {
+ return Source ? std::optional<StringRef>((*Source)->getString())
+ : std::nullopt;
}
MDString *getRawFilename() const { return getOperandAs<MDString>(0); }
MDString *getRawDirectory() const { return getOperandAs<MDString>(1); }
- Optional<ChecksumInfo<MDString *>> getRawChecksum() const { return Checksum; }
- Optional<MDString *> getRawSource() const { return Source; }
+ std::optional<ChecksumInfo<MDString *>> getRawChecksum() const {
+ return Checksum;
+ }
+ std::optional<MDString *> getRawSource() const { return Source; }
static StringRef getChecksumKindAsString(ChecksumKind CSKind);
- static Optional<ChecksumKind> getChecksumKind(StringRef CSKindStr);
+ static std::optional<ChecksumKind> getChecksumKind(StringRef CSKindStr);
static bool classof(const Metadata *MD) {
return MD->getMetadataID() == DIFileKind;
@@ -682,7 +685,7 @@ StringRef DIScope::getDirectory() const {
return "";
}
-Optional<StringRef> DIScope::getSource() const {
+std::optional<StringRef> DIScope::getSource() const {
if (auto *F = getFile())
return F->getSource();
return std::nullopt;
@@ -859,7 +862,7 @@ class DIBasicType : public DIType {
/// Return the signedness of this type, or None if this type is neither
/// signed nor unsigned.
- Optional<Signedness> getSignedness() const;
+ std::optional<Signedness> getSignedness() const;
static bool classof(const Metadata *MD) {
return MD->getMetadataID() == DIBasicTypeKind;
@@ -965,22 +968,22 @@ class DIDerivedType : public DIType {
/// The DWARF address space of the memory pointed to or referenced by a
/// pointer or reference type respectively.
- Optional<unsigned> DWARFAddressSpace;
+ std::optional<unsigned> DWARFAddressSpace;
DIDerivedType(LLVMContext &C, StorageType Storage, unsigned Tag,
unsigned Line, uint64_t SizeInBits, uint32_t AlignInBits,
- uint64_t OffsetInBits, Optional<unsigned> DWARFAddressSpace,
- DIFlags Flags, ArrayRef<Metadata *> Ops)
+ uint64_t OffsetInBits,
+ std::optional<unsigned> DWARFAddressSpace, DIFlags Flags,
+ ArrayRef<Metadata *> Ops)
: DIType(C, DIDerivedTypeKind, Storage, Tag, Line, SizeInBits,
AlignInBits, OffsetInBits, Flags, Ops),
DWARFAddressSpace(DWARFAddressSpace) {}
~DIDerivedType() = default;
-
static DIDerivedType *
getImpl(LLVMContext &Context, unsigned Tag, StringRef Name, DIFile *File,
unsigned Line, DIScope *Scope, DIType *BaseType, uint64_t SizeInBits,
uint32_t AlignInBits, uint64_t OffsetInBits,
- Optional<unsigned> DWARFAddressSpace, DIFlags Flags,
+ std::optional<unsigned> DWARFAddressSpace, DIFlags Flags,
Metadata *ExtraData, DINodeArray Annotations, StorageType Storage,
bool ShouldCreate = true) {
return getImpl(Context, Tag, getCanonicalMDString(Context, Name), File,
@@ -992,7 +995,7 @@ class DIDerivedType : public DIType {
getImpl(LLVMContext &Context, unsigned Tag, MDString *Name, Metadata *File,
unsigned Line, Metadata *Scope, Metadata *BaseType,
uint64_t SizeInBits, uint32_t AlignInBits, uint64_t OffsetInBits,
- Optional<unsigned> DWARFAddressSpace, DIFlags Flags,
+ std::optional<unsigned> DWARFAddressSpace, DIFlags Flags,
Metadata *ExtraData, Metadata *Annotations, StorageType Storage,
bool ShouldCreate = true);
@@ -1009,7 +1012,7 @@ class DIDerivedType : public DIType {
(unsigned Tag, MDString *Name, Metadata *File, unsigned Line,
Metadata *Scope, Metadata *BaseType, uint64_t SizeInBits,
uint32_t AlignInBits, uint64_t OffsetInBits,
- Optional<unsigned> DWARFAddressSpace, DIFlags Flags,
+ std::optional<unsigned> DWARFAddressSpace, DIFlags Flags,
Metadata *ExtraData = nullptr, Metadata *Annotations = nullptr),
(Tag, Name, File, Line, Scope, BaseType, SizeInBits, AlignInBits,
OffsetInBits, DWARFAddressSpace, Flags, ExtraData, Annotations))
@@ -1017,7 +1020,7 @@ class DIDerivedType : public DIType {
(unsigned Tag, StringRef Name, DIFile *File, unsigned Line,
DIScope *Scope, DIType *BaseType, uint64_t SizeInBits,
uint32_t AlignInBits, uint64_t OffsetInBits,
- Optional<unsigned> DWARFAddressSpace, DIFlags Flags,
+ std::optional<unsigned> DWARFAddressSpace, DIFlags Flags,
Metadata *ExtraData = nullptr,
DINodeArray Annotations = nullptr),
(Tag, Name, File, Line, Scope, BaseType, SizeInBits,
@@ -1032,7 +1035,9 @@ class DIDerivedType : public DIType {
/// \returns The DWARF address space of the memory pointed to or referenced by
/// a pointer or reference type respectively.
- Optional<unsigned> getDWARFAddressSpace() const { return DWARFAddressSpace; }
+ std::optional<unsigned> getDWARFAddressSpace() const {
+ return DWARFAddressSpace;
+ }
/// Get extra data associated with this derived type.
///
@@ -1377,9 +1382,9 @@ class DICompileUnit : public DIScope {
LastDebugNameTableKind = None
};
- static Optional<DebugEmissionKind> getEmissionKind(StringRef Str);
+ static std::optional<DebugEmissionKind> getEmissionKind(StringRef Str);
static const char *emissionKindString(DebugEmissionKind EK);
- static Optional<DebugNameTableKind> getNameTableKind(StringRef Str);
+ static std::optional<DebugNameTableKind> getNameTableKind(StringRef Str);
static const char *nameTableKindString(DebugNameTableKind PK);
private:
@@ -1657,7 +1662,7 @@ class DILocation : public MDNode {
DIFile *getFile() const { return getScope()->getFile(); }
StringRef getFilename() const { return getScope()->getFilename(); }
StringRef getDirectory() const { return getScope()->getDirectory(); }
- Optional<StringRef> getSource() const { return getScope()->getSource(); }
+ std::optional<StringRef> getSource() const { return getScope()->getSource(); }
/// Get the scope where this is inlined.
///
@@ -1724,7 +1729,7 @@ class DILocation : public MDNode {
/// base discriminator is set in the new DILocation, the other encoded values
/// are elided.
/// If the discriminator cannot be encoded, the function returns None.
- inline Optional<const DILocation *>
+ inline std::optional<const DILocation *>
cloneWithBaseDiscriminator(unsigned BD) const;
/// Returns the duplication factor stored in the discriminator, or 1 if no
@@ -1741,7 +1746,7 @@ class DILocation : public MDNode {
/// duplication factor encoded in the discriminator. The current duplication
/// factor is as defined by getDuplicationFactor().
/// Returns None if encoding failed.
- inline Optional<const DILocation *>
+ inline std::optional<const DILocation *>
cloneByMultiplyingDuplicationFactor(unsigned DF) const;
/// When two instructions are combined into a single instruction we also
@@ -1800,8 +1805,8 @@ class DILocation : public MDNode {
/// The return is None if the values cannot be encoded in 32 bits - for
/// example, values for BD or DF larger than 12 bits. Otherwise, the return is
/// the encoded value.
- static Optional<unsigned> encodeDiscriminator(unsigned BD, unsigned DF,
- unsigned CI);
+ static std::optional<unsigned> encodeDiscriminator(unsigned BD, unsigned DF,
+ unsigned CI);
/// Raw decoder for values in an encoded discriminator D.
static void decodeDiscriminator(unsigned D, unsigned &BD, unsigned &DF,
@@ -2259,7 +2264,7 @@ unsigned DILocation::getCopyIdentifier() const {
return getCopyIdentifierFromDiscriminator(getDiscriminator());
}
-Optional<const DILocation *>
+std::optional<const DILocation *>
DILocation::cloneWithBaseDiscriminator(unsigned D) const {
unsigned BD, DF, CI;
@@ -2273,12 +2278,12 @@ DILocation::cloneWithBaseDiscriminator(unsigned D) const {
decodeDiscriminator(getDiscriminator(), BD, DF, CI);
if (D == BD)
return this;
- if (Optional<unsigned> Encoded = encodeDiscriminator(D, DF, CI))
+ if (std::optional<unsigned> Encoded = encodeDiscriminator(D, DF, CI))
return cloneWithDiscriminator(*Encoded);
return std::nullopt;
}
-Optional<const DILocation *>
+std::optional<const DILocation *>
DILocation::cloneByMultiplyingDuplicationFactor(unsigned DF) const {
assert(!EnableFSDiscriminator && "FSDiscriminator should not call this.");
@@ -2288,7 +2293,7 @@ DILocation::cloneByMultiplyingDuplicationFactor(unsigned DF) const {
unsigned BD = getBaseDiscriminator();
unsigned CI = getCopyIdentifier();
- if (Optional<unsigned> D = encodeDiscriminator(BD, DF, CI))
+ if (std::optional<unsigned> D = encodeDiscriminator(BD, DF, CI))
return cloneWithDiscriminator(*D);
return std::nullopt;
}
@@ -2545,11 +2550,11 @@ class DIVariable : public DINode {
uint32_t getAlignInBits() const { return AlignInBits; }
uint32_t getAlignInBytes() const { return getAlignInBits() / CHAR_BIT; }
/// Determines the size of the variable's type.
- Optional<uint64_t> getSizeInBits() const;
+ std::optional<uint64_t> getSizeInBits() const;
/// Return the signedness of this variable's type, or None if this type is
/// neither signed nor unsigned.
- Optional<DIBasicType::Signedness> getSignedness() const {
+ std::optional<DIBasicType::Signedness> getSignedness() const {
if (auto *BT = dyn_cast<DIBasicType>(getType()))
return BT->getSignedness();
return std::nullopt;
@@ -2567,7 +2572,7 @@ class DIVariable : public DINode {
return "";
}
- Optional<StringRef> getSource() const {
+ std::optional<StringRef> getSource() const {
if (auto *F = getFile())
return F->getSource();
return std::nullopt;
@@ -2629,7 +2634,7 @@ class DIExpression : public MDNode {
enum SignedOrUnsignedConstant { SignedConstant, UnsignedConstant };
/// Determine whether this represents a constant value, if so
// return it's sign information.
- llvm::Optional<SignedOrUnsignedConstant> isConstant() const;
+ std::optional<SignedOrUnsignedConstant> isConstant() const;
/// Return the number of unique location operands referred to (via
/// DW_OP_LLVM_arg) in this expression; this is not necessarily the number of
@@ -2761,11 +2766,11 @@ class DIExpression : public MDNode {
};
/// Retrieve the details of this fragment expression.
- static Optional<FragmentInfo> getFragmentInfo(expr_op_iterator Start,
- expr_op_iterator End);
+ static std::optional<FragmentInfo> getFragmentInfo(expr_op_iterator Start,
+ expr_op_iterator End);
/// Retrieve the details of this fragment expression.
- Optional<FragmentInfo> getFragmentInfo() const {
+ std::optional<FragmentInfo> getFragmentInfo() const {
return getFragmentInfo(expr_op_begin(), expr_op_end());
}
@@ -2858,7 +2863,7 @@ class DIExpression : public MDNode {
/// \return Creating a fragment expression may fail if \c Expr
/// contains arithmetic operations that would be
/// truncated.
- static Optional<DIExpression *>
+ static std::optional<DIExpression *>
createFragmentExpression(const DIExpression *Expr, unsigned OffsetInBits,
unsigned SizeInBits);
@@ -3660,7 +3665,7 @@ class DebugVariable {
using FragmentInfo = DIExpression::FragmentInfo;
const DILocalVariable *Variable;
- Optional<FragmentInfo> Fragment;
+ std::optional<FragmentInfo> Fragment;
const DILocation *InlinedAt;
/// Fragment that will overlap all other fragments. Used as default when
@@ -3670,7 +3675,8 @@ class DebugVariable {
public:
DebugVariable(const DbgVariableIntrinsic *DII);
- DebugVariable(const DILocalVariable *Var, Optional<FragmentInfo> FragmentInfo,
+ DebugVariable(const DILocalVariable *Var,
+ std::optional<FragmentInfo> FragmentInfo,
const DILocation *InlinedAt)
: Variable(Var), Fragment(FragmentInfo), InlinedAt(InlinedAt) {}
@@ -3681,7 +3687,7 @@ class DebugVariable {
InlinedAt(InlinedAt) {}
const DILocalVariable *getVariable() const { return Variable; }
- Optional<FragmentInfo> getFragment() const { return Fragment; }
+ std::optional<FragmentInfo> getFragment() const { return Fragment; }
const DILocation *getInlinedAt() const { return InlinedAt; }
FragmentInfo getFragmentOrDefault() const {
@@ -3718,7 +3724,7 @@ template <> struct DenseMapInfo<DebugVariable> {
static unsigned getHashValue(const DebugVariable &D) {
unsigned HV = 0;
- const Optional<FragmentInfo> Fragment = D.getFragment();
+ const std::optional<FragmentInfo> Fragment = D.getFragment();
if (Fragment)
HV = DenseMapInfo<FragmentInfo>::getHashValue(*Fragment);
diff --git a/llvm/include/llvm/IR/IntrinsicInst.h b/llvm/include/llvm/IR/IntrinsicInst.h
index 82d52de44e55..4b807824db31 100644
--- a/llvm/include/llvm/IR/IntrinsicInst.h
+++ b/llvm/include/llvm/IR/IntrinsicInst.h
@@ -314,10 +314,10 @@ class DbgVariableIntrinsic : public DbgInfoIntrinsic {
/// Get the size (in bits) of the variable, or fragment of the variable that
/// is described.
- Optional<uint64_t> getFragmentSizeInBits() const;
+ std::optional<uint64_t> getFragmentSizeInBits() const;
/// Get the FragmentInfo for the variable.
- Optional<DIExpression::FragmentInfo> getFragment() const {
+ std::optional<DIExpression::FragmentInfo> getFragment() const {
return getExpression()->getFragmentInfo();
}
diff --git a/llvm/include/llvm/MC/MCContext.h b/llvm/include/llvm/MC/MCContext.h
index 415f271ed795..4fb273fb1ccd 100644
--- a/llvm/include/llvm/MC/MCContext.h
+++ b/llvm/include/llvm/MC/MCContext.h
@@ -35,6 +35,7 @@
#include <functional>
#include <map>
#include <memory>
+#include <optional>
#include <string>
#include <utility>
#include <vector>
@@ -716,10 +717,10 @@ class MCContext {
void setMainFileName(StringRef S) { MainFileName = std::string(S); }
/// Creates an entry in the dwarf file and directory tables.
- Expected<unsigned> getDwarfFile(StringRef Directory, StringRef FileName,
- unsigned FileNumber,
- Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source, unsigned CUID);
+ Expected<unsigned> getDwarfFile(
+ StringRef Directory, StringRef FileName, unsigned FileNumber,
+ Optional<MD5::MD5Result> Checksum, std::optional<StringRef> Source,
+ unsigned CUID);
bool isValidDwarfFileNumber(unsigned FileNumber, unsigned CUID = 0);
@@ -754,7 +755,7 @@ class MCContext {
void setMCLineTableRootFile(unsigned CUID, StringRef CompilationDir,
StringRef Filename,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source) {
+ std::optional<StringRef> Source) {
getMCDwarfLineTable(CUID).setRootFile(CompilationDir, Filename, Checksum,
Source);
}
diff --git a/llvm/include/llvm/MC/MCDwarf.h b/llvm/include/llvm/MC/MCDwarf.h
index 557c713575e4..e576dab2f9eb 100644
--- a/llvm/include/llvm/MC/MCDwarf.h
+++ b/llvm/include/llvm/MC/MCDwarf.h
@@ -25,6 +25,7 @@
#include "llvm/Support/StringSaver.h"
#include <cassert>
#include <cstdint>
+#include <optional>
#include <string>
#include <utility>
#include <vector>
@@ -93,7 +94,7 @@ struct MCDwarfFile {
/// The source code of the file. Non-owning reference to data allocated in
/// MCContext.
- Optional<StringRef> Source;
+ std::optional<StringRef> Source;
};
/// Instances of this class represent the information from a
@@ -271,7 +272,7 @@ struct MCDwarfLineTableHeader {
Expected<unsigned> tryGetFile(StringRef &Directory, StringRef &FileName,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source,
+ std::optional<StringRef> Source,
uint16_t DwarfVersion,
unsigned FileNumber = 0);
std::pair<MCSymbol *, MCSymbol *>
@@ -295,7 +296,7 @@ struct MCDwarfLineTableHeader {
void setRootFile(StringRef Directory, StringRef FileName,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source) {
+ std::optional<StringRef> Source) {
CompilationDir = std::string(Directory);
RootFile.Name = std::string(FileName);
RootFile.DirIndex = 0;
@@ -325,7 +326,7 @@ class MCDwarfDwoLineTable {
public:
void maybeSetRootFile(StringRef Directory, StringRef FileName,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source) {
+ std::optional<StringRef> Source) {
if (!Header.RootFile.Name.empty())
return;
Header.setRootFile(Directory, FileName, Checksum, Source);
@@ -333,7 +334,7 @@ class MCDwarfDwoLineTable {
unsigned getFile(StringRef Directory, StringRef FileName,
Optional<MD5::MD5Result> Checksum, uint16_t DwarfVersion,
- Optional<StringRef> Source) {
+ std::optional<StringRef> Source) {
HasSplitLineTable = true;
return cantFail(Header.tryGetFile(Directory, FileName, Checksum, Source,
DwarfVersion));
@@ -362,18 +363,20 @@ class MCDwarfLineTable {
Expected<unsigned> tryGetFile(StringRef &Directory, StringRef &FileName,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source,
+ std::optional<StringRef> Source,
uint16_t DwarfVersion,
unsigned FileNumber = 0);
unsigned getFile(StringRef &Directory, StringRef &FileName,
- Optional<MD5::MD5Result> Checksum, Optional<StringRef> Source,
- uint16_t DwarfVersion, unsigned FileNumber = 0) {
+ Optional<MD5::MD5Result> Checksum,
+ std::optional<StringRef> Source, uint16_t DwarfVersion,
+ unsigned FileNumber = 0) {
return cantFail(tryGetFile(Directory, FileName, Checksum, Source,
DwarfVersion, FileNumber));
}
void setRootFile(StringRef Directory, StringRef FileName,
- Optional<MD5::MD5Result> Checksum, Optional<StringRef> Source) {
+ Optional<MD5::MD5Result> Checksum,
+ std::optional<StringRef> Source) {
Header.CompilationDir = std::string(Directory);
Header.RootFile.Name = std::string(FileName);
Header.RootFile.DirIndex = 0;
diff --git a/llvm/include/llvm/MC/MCStreamer.h b/llvm/include/llvm/MC/MCStreamer.h
index 423879ed5a9c..5edae19eccfb 100644
--- a/llvm/include/llvm/MC/MCStreamer.h
+++ b/llvm/include/llvm/MC/MCStreamer.h
@@ -31,6 +31,7 @@
#include <cassert>
#include <cstdint>
#include <memory>
+#include <optional>
#include <string>
#include <utility>
#include <vector>
@@ -908,7 +909,7 @@ class MCStreamer {
unsigned emitDwarfFileDirective(
unsigned FileNo, StringRef Directory, StringRef Filename,
Optional<MD5::MD5Result> Checksum = std::nullopt,
- Optional<StringRef> Source = std::nullopt, unsigned CUID = 0) {
+ std::optional<StringRef> Source = std::nullopt, unsigned CUID = 0) {
return cantFail(
tryEmitDwarfFileDirective(FileNo, Directory, Filename, Checksum,
Source, CUID));
@@ -922,12 +923,12 @@ class MCStreamer {
virtual Expected<unsigned> tryEmitDwarfFileDirective(
unsigned FileNo, StringRef Directory, StringRef Filename,
Optional<MD5::MD5Result> Checksum = std::nullopt,
- Optional<StringRef> Source = std::nullopt, unsigned CUID = 0);
+ std::optional<StringRef> Source = std::nullopt, unsigned CUID = 0);
/// Specify the "root" file of the compilation, using the ".file 0" extension.
virtual void emitDwarfFile0Directive(StringRef Directory, StringRef Filename,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source,
+ std::optional<StringRef> Source,
unsigned CUID = 0);
virtual void emitCFIBKeyFrame();
diff --git a/llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h b/llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h
index 56cc15658675..fdb586e153ff 100644
--- a/llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h
+++ b/llvm/include/llvm/Transforms/Utils/MemoryOpRemark.h
@@ -17,6 +17,7 @@
#include "llvm/ADT/StringRef.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/DiagnosticInfo.h"
+#include <optional>
namespace llvm {
@@ -81,8 +82,8 @@ struct MemoryOpRemark {
void visitSizeOperand(Value *V, DiagnosticInfoIROptimization &R);
struct VariableInfo {
- Optional<StringRef> Name;
- Optional<uint64_t> Size;
+ std::optional<StringRef> Name;
+ std::optional<uint64_t> Size;
bool isEmpty() const { return !Name && !Size; }
};
/// Gather more information about \p V as a variable. This can be debug info,
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp
index 0ac42a4976ba..2c1a94b12b31 100644
--- a/llvm/lib/AsmParser/LLParser.cpp
+++ b/llvm/lib/AsmParser/LLParser.cpp
@@ -4590,7 +4590,7 @@ bool LLParser::parseMDField(LocTy Loc, StringRef Name, MDFieldList &Result) {
template <>
bool LLParser::parseMDField(LocTy Loc, StringRef Name,
ChecksumKindField &Result) {
- Optional<DIFile::ChecksumKind> CSKind =
+ std::optional<DIFile::ChecksumKind> CSKind =
DIFile::getChecksumKind(Lex.getStrVal());
if (Lex.getKind() != lltok::ChecksumKind || !CSKind)
@@ -4890,7 +4890,7 @@ bool LLParser::parseDIDerivedType(MDNode *&Result, bool IsDistinct) {
PARSE_MD_FIELDS();
#undef VISIT_MD_FIELDS
- Optional<unsigned> DWARFAddressSpace;
+ std::optional<unsigned> DWARFAddressSpace;
if (dwarfAddressSpace.Val != UINT32_MAX)
DWARFAddressSpace = dwarfAddressSpace.Val;
@@ -4990,13 +4990,13 @@ bool LLParser::parseDIFile(MDNode *&Result, bool IsDistinct) {
PARSE_MD_FIELDS();
#undef VISIT_MD_FIELDS
- Optional<DIFile::ChecksumInfo<MDString *>> OptChecksum;
+ std::optional<DIFile::ChecksumInfo<MDString *>> OptChecksum;
if (checksumkind.Seen && checksum.Seen)
OptChecksum.emplace(checksumkind.Val, checksum.Val);
else if (checksumkind.Seen || checksum.Seen)
return Lex.Error("'checksumkind' and 'checksum' must be provided together");
- Optional<MDString *> OptSource;
+ std::optional<MDString *> OptSource;
if (source.Seen)
OptSource = source.Val;
Result = GET_OR_DISTINCT(DIFile, (Context, filename.Val, directory.Val,
diff --git a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
index fd493a5df352..adb36e93faf0 100644
--- a/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
+++ b/llvm/lib/Bitcode/Reader/MetadataLoader.cpp
@@ -55,6 +55,7 @@
#include <deque>
#include <iterator>
#include <limits>
+#include <optional>
#include <string>
#include <tuple>
#include <type_traits>
@@ -1448,7 +1449,7 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
// DWARF address space is encoded as N->getDWARFAddressSpace() + 1. 0 means
// that there is no DWARF address space associated with DIDerivedType.
- Optional<unsigned> DWARFAddressSpace;
+ std::optional<unsigned> DWARFAddressSpace;
if (Record.size() > 12 && Record[12])
DWARFAddressSpace = Record[12] - 1;
@@ -1611,7 +1612,7 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
return error("Invalid record");
IsDistinct = Record[0];
- Optional<DIFile::ChecksumInfo<MDString *>> Checksum;
+ std::optional<DIFile::ChecksumInfo<MDString *>> Checksum;
// The BitcodeWriter writes null bytes into Record[3:4] when the Checksum
// is not present. This matches up with the old internal representation,
// and the old encoding for CSK_None in the ChecksumKind. The new
@@ -1621,11 +1622,11 @@ Error MetadataLoader::MetadataLoaderImpl::parseOneMetadata(
Checksum.emplace(static_cast<DIFile::ChecksumKind>(Record[3]),
getMDString(Record[4]));
MetadataList.assignValue(
- GET_OR_DISTINCT(
- DIFile,
- (Context, getMDString(Record[1]), getMDString(Record[2]), Checksum,
- Record.size() > 5 ? Optional<MDString *>(getMDString(Record[5]))
- : std::nullopt)),
+ GET_OR_DISTINCT(DIFile, (Context, getMDString(Record[1]),
+ getMDString(Record[2]), Checksum,
+ Record.size() > 5 ? std::optional<MDString *>(
+ getMDString(Record[5]))
+ : std::nullopt)),
NextMetadataNo);
NextMetadataNo++;
break;
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
index a06cec599bde..9629a5b1d1f9 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
@@ -56,6 +56,7 @@
#include <algorithm>
#include <cstddef>
#include <iterator>
+#include <optional>
#include <string>
using namespace llvm;
@@ -3533,7 +3534,7 @@ Optional<MD5::MD5Result> DwarfDebug::getMD5AsBytes(const DIFile *File) const {
assert(File);
if (getDwarfVersion() < 5)
return std::nullopt;
- Optional<DIFile::ChecksumInfo<StringRef>> Checksum = File->getChecksum();
+ std::optional<DIFile::ChecksumInfo<StringRef>> Checksum = File->getChecksum();
if (!Checksum || Checksum->Kind != DIFile::CSK_MD5)
return std::nullopt;
diff --git a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h
index 36fdf0415cc1..3cb5f56df06a 100644
--- a/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h
+++ b/llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h
@@ -22,6 +22,7 @@
#include <cassert>
#include <cstdint>
#include <iterator>
+#include <optional>
namespace llvm {
@@ -88,7 +89,7 @@ class DIExpressionCursor {
DIExpression::expr_op_iterator end() const { return End; }
/// Retrieve the fragment information, if any.
- Optional<DIExpression::FragmentInfo> getFragmentInfo() const {
+ std::optional<DIExpression::FragmentInfo> getFragmentInfo() const {
return DIExpression::getFragmentInfo(Start, End);
}
};
diff --git a/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h b/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h
index 7db61d82d781..c12608515e64 100644
--- a/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h
+++ b/llvm/lib/CodeGen/LiveDebugValues/InstrRefBasedImpl.h
@@ -19,6 +19,7 @@
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/TargetRegisterInfo.h"
#include "llvm/IR/DebugInfoMetadata.h"
+#include <optional>
#include "LiveDebugValues.h"
@@ -1005,7 +1006,7 @@ class VLocTracker {
// The "empty" fragment is stored as DebugVariable::DefaultFragment, so
// that it overlaps with everything, however its cannonical representation
// in a DebugVariable is as "None".
- Optional<DIExpression::FragmentInfo> OptFragmentInfo = FragmentInfo;
+ std::optional<DIExpression::FragmentInfo> OptFragmentInfo = FragmentInfo;
if (DebugVariable::isDefaultFragment(FragmentInfo))
OptFragmentInfo = std::nullopt;
@@ -1033,7 +1034,7 @@ class InstrRefBasedLDV : public LDVImpl {
friend class ::InstrRefLDVTest;
using FragmentInfo = DIExpression::FragmentInfo;
- using OptFragmentInfo = Optional<DIExpression::FragmentInfo>;
+ using OptFragmentInfo = std::optional<DIExpression::FragmentInfo>;
// Helper while building OverlapMap, a map of all fragments seen for a given
// DILocalVariable.
diff --git a/llvm/lib/CodeGen/LiveDebugValues/VarLocBasedImpl.cpp b/llvm/lib/CodeGen/LiveDebugValues/VarLocBasedImpl.cpp
index 3b36e1a4243e..222bbb0784cd 100644
--- a/llvm/lib/CodeGen/LiveDebugValues/VarLocBasedImpl.cpp
+++ b/llvm/lib/CodeGen/LiveDebugValues/VarLocBasedImpl.cpp
@@ -148,6 +148,7 @@
#include <cstdint>
#include <functional>
#include <map>
+#include <optional>
#include <queue>
#include <tuple>
#include <utility>
@@ -281,7 +282,7 @@ class VarLocBasedLDV : public LDVImpl {
enum struct TransferKind { TransferCopy, TransferSpill, TransferRestore };
using FragmentInfo = DIExpression::FragmentInfo;
- using OptFragmentInfo = Optional<DIExpression::FragmentInfo>;
+ using OptFragmentInfo = std::optional<DIExpression::FragmentInfo>;
/// A pair of debug variable and value location.
struct VarLoc {
diff --git a/llvm/lib/CodeGen/LiveDebugVariables.cpp b/llvm/lib/CodeGen/LiveDebugVariables.cpp
index f514f4011db5..4db941ea2d9e 100644
--- a/llvm/lib/CodeGen/LiveDebugVariables.cpp
+++ b/llvm/lib/CodeGen/LiveDebugVariables.cpp
@@ -59,6 +59,7 @@
#include <cassert>
#include <iterator>
#include <memory>
+#include <optional>
#include <utility>
using namespace llvm;
@@ -286,7 +287,7 @@ class LDVImpl;
class UserValue {
const DILocalVariable *Variable; ///< The debug info variable we are part of.
/// The part of the variable we describe.
- const Optional<DIExpression::FragmentInfo> Fragment;
+ const std::optional<DIExpression::FragmentInfo> Fragment;
DebugLoc dl; ///< The debug location for the variable. This is
///< used by dwarf writer to find lexical scope.
UserValue *leader; ///< Equivalence class leader.
@@ -319,7 +320,7 @@ class UserValue {
public:
/// Create a new UserValue.
UserValue(const DILocalVariable *var,
- Optional<DIExpression::FragmentInfo> Fragment, DebugLoc L,
+ std::optional<DIExpression::FragmentInfo> Fragment, DebugLoc L,
LocMap::Allocator &alloc)
: Variable(var), Fragment(Fragment), dl(std::move(L)), leader(this),
locInts(alloc) {}
@@ -582,7 +583,7 @@ class LDVImpl {
/// Find or create a UserValue.
UserValue *getUserValue(const DILocalVariable *Var,
- Optional<DIExpression::FragmentInfo> Fragment,
+ std::optional<DIExpression::FragmentInfo> Fragment,
const DebugLoc &DL);
/// Find the EC leader for VirtReg or null.
@@ -768,9 +769,10 @@ void UserValue::mapVirtRegs(LDVImpl *LDV) {
LDV->mapVirtReg(locations[i].getReg(), this);
}
-UserValue *LDVImpl::getUserValue(const DILocalVariable *Var,
- Optional<DIExpression::FragmentInfo> Fragment,
- const DebugLoc &DL) {
+UserValue *
+LDVImpl::getUserValue(const DILocalVariable *Var,
+ std::optional<DIExpression::FragmentInfo> Fragment,
+ const DebugLoc &DL) {
// FIXME: Handle partially overlapping fragments. See
// https://reviews.llvm.org/D70121#1849741.
DebugVariable ID(Var, Fragment, DL->getInlinedAt());
diff --git a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
index faedf38f40fa..300f19a89f1b 100644
--- a/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
+++ b/llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp
@@ -41,6 +41,7 @@
#include "llvm/Transforms/Utils/UnrollLoop.h"
#include <cstdint>
+#include <optional>
#define DEBUG_TYPE "openmp-ir-builder"
@@ -624,7 +625,7 @@ Constant *OpenMPIRBuilder::getOrCreateSrcLocStr(DebugLoc DL,
return getOrCreateDefaultSrcLocStr(SrcLocStrSize);
StringRef FileName = M.getName();
if (DIFile *DIF = DIL->getFile())
- if (Optional<StringRef> Source = DIF->getSource())
+ if (std::optional<StringRef> Source = DIF->getSource())
FileName = *Source;
StringRef Function = DIL->getScope()->getSubprogram()->getName();
if (Function.empty() && F)
diff --git a/llvm/lib/IR/DIBuilder.cpp b/llvm/lib/IR/DIBuilder.cpp
index 730069308e20..8cb8303852b3 100644
--- a/llvm/lib/IR/DIBuilder.cpp
+++ b/llvm/lib/IR/DIBuilder.cpp
@@ -12,13 +12,13 @@
#include "llvm/IR/DIBuilder.h"
#include "LLVMContextImpl.h"
-#include "llvm/ADT/Optional.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Module.h"
#include "llvm/Support/CommandLine.h"
+#include <optional>
using namespace llvm;
using namespace llvm::dwarf;
@@ -229,8 +229,8 @@ DIBuilder::createImportedDeclaration(DIScope *Context, DINode *Decl,
}
DIFile *DIBuilder::createFile(StringRef Filename, StringRef Directory,
- Optional<DIFile::ChecksumInfo<StringRef>> CS,
- Optional<StringRef> Source) {
+ std::optional<DIFile::ChecksumInfo<StringRef>> CS,
+ std::optional<StringRef> Source) {
return DIFile::get(VMContext, Filename, Directory, CS, Source);
}
@@ -318,7 +318,7 @@ DIDerivedType *DIBuilder::createQualifiedType(unsigned Tag, DIType *FromTy) {
DIDerivedType *
DIBuilder::createPointerType(DIType *PointeeTy, uint64_t SizeInBits,
uint32_t AlignInBits,
- Optional<unsigned> DWARFAddressSpace,
+ std::optional<unsigned> DWARFAddressSpace,
StringRef Name, DINodeArray Annotations) {
// FIXME: Why is there a name here?
return DIDerivedType::get(VMContext, dwarf::DW_TAG_pointer_type, Name,
@@ -340,7 +340,7 @@ DIDerivedType *DIBuilder::createMemberPointerType(DIType *PointeeTy,
DIDerivedType *
DIBuilder::createReferenceType(unsigned Tag, DIType *RTy, uint64_t SizeInBits,
uint32_t AlignInBits,
- Optional<unsigned> DWARFAddressSpace) {
+ std::optional<unsigned> DWARFAddressSpace) {
assert(RTy && "Unable to create reference type");
return DIDerivedType::get(VMContext, Tag, "", nullptr, 0, nullptr, RTy,
SizeInBits, AlignInBits, 0, DWARFAddressSpace,
diff --git a/llvm/lib/IR/DebugInfoMetadata.cpp b/llvm/lib/IR/DebugInfoMetadata.cpp
index 4db2b6989711..424c44f0055e 100644
--- a/llvm/lib/IR/DebugInfoMetadata.cpp
+++ b/llvm/lib/IR/DebugInfoMetadata.cpp
@@ -22,6 +22,7 @@
#include "llvm/IR/Value.h"
#include <numeric>
+#include <optional>
using namespace llvm;
@@ -172,8 +173,8 @@ const DILocation *DILocation::getMergedLocation(const DILocation *LocA,
return DILocation::get(C, Line, Col, S, L);
}
-Optional<unsigned> DILocation::encodeDiscriminator(unsigned BD, unsigned DF,
- unsigned CI) {
+std::optional<unsigned>
+DILocation::encodeDiscriminator(unsigned BD, unsigned DF, unsigned CI) {
std::array<unsigned, 3> Components = {BD, DF, CI};
uint64_t RemainingWork = 0U;
// We use RemainingWork to figure out if we have no remaining components to
@@ -601,7 +602,7 @@ DIBasicType *DIBasicType::getImpl(LLVMContext &Context, unsigned Tag,
(Tag, SizeInBits, AlignInBits, Encoding, Flags), Ops);
}
-Optional<DIBasicType::Signedness> DIBasicType::getSignedness() const {
+std::optional<DIBasicType::Signedness> DIBasicType::getSignedness() const {
switch (getEncoding()) {
case dwarf::DW_ATE_signed:
case dwarf::DW_ATE_signed_char:
@@ -661,12 +662,14 @@ Constant *DIDerivedType::getDiscriminantValue() const {
return nullptr;
}
-DIDerivedType *DIDerivedType::getImpl(
- LLVMContext &Context, unsigned Tag, MDString *Name, Metadata *File,
- unsigned Line, Metadata *Scope, Metadata *BaseType, uint64_t SizeInBits,
- uint32_t AlignInBits, uint64_t OffsetInBits,
- Optional<unsigned> DWARFAddressSpace, DIFlags Flags, Metadata *ExtraData,
- Metadata *Annotations, StorageType Storage, bool ShouldCreate) {
+DIDerivedType *
+DIDerivedType::getImpl(LLVMContext &Context, unsigned Tag, MDString *Name,
+ Metadata *File, unsigned Line, Metadata *Scope,
+ Metadata *BaseType, uint64_t SizeInBits,
+ uint32_t AlignInBits, uint64_t OffsetInBits,
+ std::optional<unsigned> DWARFAddressSpace, DIFlags Flags,
+ Metadata *ExtraData, Metadata *Annotations,
+ StorageType Storage, bool ShouldCreate) {
assert(isCanonical(Name) && "Expected canonical MDString");
DEFINE_GETIMPL_LOOKUP(DIDerivedType,
(Tag, Name, File, Line, Scope, BaseType, SizeInBits,
@@ -798,8 +801,8 @@ DISubroutineType *DISubroutineType::getImpl(LLVMContext &Context, DIFlags Flags,
}
DIFile::DIFile(LLVMContext &C, StorageType Storage,
- Optional<ChecksumInfo<MDString *>> CS, Optional<MDString *> Src,
- ArrayRef<Metadata *> Ops)
+ std::optional<ChecksumInfo<MDString *>> CS,
+ std::optional<MDString *> Src, ArrayRef<Metadata *> Ops)
: DIScope(C, DIFileKind, Storage, dwarf::DW_TAG_file_type, Ops),
Checksum(CS), Source(Src) {}
@@ -819,8 +822,9 @@ StringRef DIFile::getChecksumKindAsString(ChecksumKind CSKind) {
return ChecksumKindName[CSKind - 1];
}
-Optional<DIFile::ChecksumKind> DIFile::getChecksumKind(StringRef CSKindStr) {
- return StringSwitch<Optional<DIFile::ChecksumKind>>(CSKindStr)
+std::optional<DIFile::ChecksumKind>
+DIFile::getChecksumKind(StringRef CSKindStr) {
+ return StringSwitch<std::optional<DIFile::ChecksumKind>>(CSKindStr)
.Case("CSK_MD5", DIFile::CSK_MD5)
.Case("CSK_SHA1", DIFile::CSK_SHA1)
.Case("CSK_SHA256", DIFile::CSK_SHA256)
@@ -829,8 +833,8 @@ Optional<DIFile::ChecksumKind> DIFile::getChecksumKind(StringRef CSKindStr) {
DIFile *DIFile::getImpl(LLVMContext &Context, MDString *Filename,
MDString *Directory,
- Optional<DIFile::ChecksumInfo<MDString *>> CS,
- Optional<MDString *> Source, StorageType Storage,
+ std::optional<DIFile::ChecksumInfo<MDString *>> CS,
+ std::optional<MDString *> Source, StorageType Storage,
bool ShouldCreate) {
assert(isCanonical(Filename) && "Expected canonical MDString");
assert(isCanonical(Directory) && "Expected canonical MDString");
@@ -889,9 +893,9 @@ DICompileUnit *DICompileUnit::getImpl(
Storage);
}
-Optional<DICompileUnit::DebugEmissionKind>
+std::optional<DICompileUnit::DebugEmissionKind>
DICompileUnit::getEmissionKind(StringRef Str) {
- return StringSwitch<Optional<DebugEmissionKind>>(Str)
+ return StringSwitch<std::optional<DebugEmissionKind>>(Str)
.Case("NoDebug", NoDebug)
.Case("FullDebug", FullDebug)
.Case("LineTablesOnly", LineTablesOnly)
@@ -899,9 +903,9 @@ DICompileUnit::getEmissionKind(StringRef Str) {
.Default(std::nullopt);
}
-Optional<DICompileUnit::DebugNameTableKind>
+std::optional<DICompileUnit::DebugNameTableKind>
DICompileUnit::getNameTableKind(StringRef Str) {
- return StringSwitch<Optional<DebugNameTableKind>>(Str)
+ return StringSwitch<std::optional<DebugNameTableKind>>(Str)
.Case("Default", DebugNameTableKind::Default)
.Case("GNU", DebugNameTableKind::GNU)
.Case("None", DebugNameTableKind::None)
@@ -1204,7 +1208,7 @@ DIVariable::DIVariable(LLVMContext &C, unsigned ID, StorageType Storage,
uint32_t AlignInBits)
: DINode(C, ID, Storage, dwarf::DW_TAG_variable, Ops), Line(Line),
AlignInBits(AlignInBits) {}
-Optional<uint64_t> DIVariable::getSizeInBits() const {
+std::optional<uint64_t> DIVariable::getSizeInBits() const {
// This is used by the Verifier so be mindful of broken types.
const Metadata *RawType = getRawType();
while (RawType) {
@@ -1408,7 +1412,7 @@ bool DIExpression::isComplex() const {
return false;
}
-Optional<DIExpression::FragmentInfo>
+std::optional<DIExpression::FragmentInfo>
DIExpression::getFragmentInfo(expr_op_iterator Start, expr_op_iterator End) {
for (auto I = Start; I != End; ++I)
if (I->getOp() == dwarf::DW_OP_LLVM_fragment) {
@@ -1622,7 +1626,7 @@ DIExpression *DIExpression::appendToStack(const DIExpression *Expr,
// has no DW_OP_stack_value.
//
// Match .* DW_OP_stack_value (DW_OP_LLVM_fragment A B)?.
- Optional<FragmentInfo> FI = Expr->getFragmentInfo();
+ std::optional<FragmentInfo> FI = Expr->getFragmentInfo();
unsigned DropUntilStackValue = FI ? 3 : 0;
ArrayRef<uint64_t> ExprOpsBeforeFragment =
Expr->getElements().drop_back(DropUntilStackValue);
@@ -1641,7 +1645,7 @@ DIExpression *DIExpression::appendToStack(const DIExpression *Expr,
return DIExpression::append(Expr, NewOps);
}
-Optional<DIExpression *> DIExpression::createFragmentExpression(
+std::optional<DIExpression *> DIExpression::createFragmentExpression(
const DIExpression *Expr, unsigned OffsetInBits, unsigned SizeInBits) {
SmallVector<uint64_t, 8> Ops;
// Track whether it's safe to split the value at the top of the DWARF stack,
@@ -1752,7 +1756,7 @@ uint64_t DIExpression::getNumLocationOperands() const {
return Result;
}
-llvm::Optional<DIExpression::SignedOrUnsignedConstant>
+std::optional<DIExpression::SignedOrUnsignedConstant>
DIExpression::isConstant() const {
// Recognize signed and unsigned constants.
diff --git a/llvm/lib/IR/IntrinsicInst.cpp b/llvm/lib/IR/IntrinsicInst.cpp
index 1b1e67167389..bd0438400e83 100644
--- a/llvm/lib/IR/IntrinsicInst.cpp
+++ b/llvm/lib/IR/IntrinsicInst.cpp
@@ -185,7 +185,7 @@ void DbgVariableIntrinsic::addVariableLocationOps(ArrayRef<Value *> NewValues,
0, MetadataAsValue::get(getContext(), DIArgList::get(getContext(), MDs)));
}
-Optional<uint64_t> DbgVariableIntrinsic::getFragmentSizeInBits() const {
+std::optional<uint64_t> DbgVariableIntrinsic::getFragmentSizeInBits() const {
if (auto Fragment = getExpression()->getFragmentInfo())
return Fragment->SizeInBits;
return getVariable()->getSizeInBits();
diff --git a/llvm/lib/IR/LLVMContextImpl.h b/llvm/lib/IR/LLVMContextImpl.h
index 3f4f222a0720..80886e95c060 100644
--- a/llvm/lib/IR/LLVMContextImpl.h
+++ b/llvm/lib/IR/LLVMContextImpl.h
@@ -47,6 +47,7 @@
#include <cstddef>
#include <cstdint>
#include <memory>
+#include <optional>
#include <string>
#include <utility>
#include <vector>
@@ -482,7 +483,7 @@ template <> struct MDNodeKeyImpl<DIDerivedType> {
uint64_t SizeInBits;
uint64_t OffsetInBits;
uint32_t AlignInBits;
- Optional<unsigned> DWARFAddressSpace;
+ std::optional<unsigned> DWARFAddressSpace;
unsigned Flags;
Metadata *ExtraData;
Metadata *Annotations;
@@ -490,7 +491,7 @@ template <> struct MDNodeKeyImpl<DIDerivedType> {
MDNodeKeyImpl(unsigned Tag, MDString *Name, Metadata *File, unsigned Line,
Metadata *Scope, Metadata *BaseType, uint64_t SizeInBits,
uint32_t AlignInBits, uint64_t OffsetInBits,
- Optional<unsigned> DWARFAddressSpace, unsigned Flags,
+ std::optional<unsigned> DWARFAddressSpace, unsigned Flags,
Metadata *ExtraData, Metadata *Annotations)
: Tag(Tag), Name(Name), File(File), Line(Line), Scope(Scope),
BaseType(BaseType), SizeInBits(SizeInBits), OffsetInBits(OffsetInBits),
@@ -667,12 +668,12 @@ template <> struct MDNodeKeyImpl<DISubroutineType> {
template <> struct MDNodeKeyImpl<DIFile> {
MDString *Filename;
MDString *Directory;
- Optional<DIFile::ChecksumInfo<MDString *>> Checksum;
- Optional<MDString *> Source;
+ std::optional<DIFile::ChecksumInfo<MDString *>> Checksum;
+ std::optional<MDString *> Source;
MDNodeKeyImpl(MDString *Filename, MDString *Directory,
- Optional<DIFile::ChecksumInfo<MDString *>> Checksum,
- Optional<MDString *> Source)
+ std::optional<DIFile::ChecksumInfo<MDString *>> Checksum,
+ std::optional<MDString *> Source)
: Filename(Filename), Directory(Directory), Checksum(Checksum),
Source(Source) {}
MDNodeKeyImpl(const DIFile *N)
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 99ee2c48bc48..836990030aee 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -1241,7 +1241,7 @@ void Verifier::visitDISubroutineType(const DISubroutineType &N) {
void Verifier::visitDIFile(const DIFile &N) {
CheckDI(N.getTag() == dwarf::DW_TAG_file_type, "invalid tag", &N);
- Optional<DIFile::ChecksumInfo<StringRef>> Checksum = N.getChecksum();
+ std::optional<DIFile::ChecksumInfo<StringRef>> Checksum = N.getChecksum();
if (Checksum) {
CheckDI(Checksum->Kind <= DIFile::ChecksumKind::CSK_Last,
"invalid checksum kind", &N);
diff --git a/llvm/lib/MC/MCAsmStreamer.cpp b/llvm/lib/MC/MCAsmStreamer.cpp
index 59c1d9427880..469d89708ced 100644
--- a/llvm/lib/MC/MCAsmStreamer.cpp
+++ b/llvm/lib/MC/MCAsmStreamer.cpp
@@ -37,6 +37,7 @@
#include "llvm/Support/LEB128.h"
#include "llvm/Support/MathExtras.h"
#include "llvm/Support/Path.h"
+#include <optional>
using namespace llvm;
@@ -63,7 +64,7 @@ class MCAsmStreamer final : public MCStreamer {
void printDwarfFileDirective(unsigned FileNo, StringRef Directory,
StringRef Filename,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source,
+ std::optional<StringRef> Source,
bool UseDwarfDirectory,
raw_svector_ostream &OS) const;
void emitCFIStartProcImpl(MCDwarfFrameInfo &Frame) override;
@@ -266,13 +267,15 @@ class MCAsmStreamer final : public MCStreamer {
void emitFileDirective(StringRef Filename) override;
void emitFileDirective(StringRef Filename, StringRef CompilerVerion,
StringRef TimeStamp, StringRef Description) override;
- Expected<unsigned> tryEmitDwarfFileDirective(
- unsigned FileNo, StringRef Directory, StringRef Filename,
- Optional<MD5::MD5Result> Checksum = std::nullopt,
- Optional<StringRef> Source = std::nullopt, unsigned CUID = 0) override;
+ Expected<unsigned>
+ tryEmitDwarfFileDirective(unsigned FileNo, StringRef Directory,
+ StringRef Filename,
+ Optional<MD5::MD5Result> Checksum = std::nullopt,
+ std::optional<StringRef> Source = std::nullopt,
+ unsigned CUID = 0) override;
void emitDwarfFile0Directive(StringRef Directory, StringRef Filename,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source,
+ std::optional<StringRef> Source,
unsigned CUID = 0) override;
void emitDwarfLocDirective(unsigned FileNo, unsigned Line, unsigned Column,
unsigned Flags, unsigned Isa,
@@ -1541,7 +1544,7 @@ void MCAsmStreamer::emitFileDirective(StringRef Filename,
void MCAsmStreamer::printDwarfFileDirective(
unsigned FileNo, StringRef Directory, StringRef Filename,
- Optional<MD5::MD5Result> Checksum, Optional<StringRef> Source,
+ Optional<MD5::MD5Result> Checksum, std::optional<StringRef> Source,
bool UseDwarfDirectory, raw_svector_ostream &OS) const {
SmallString<128> FullPathName;
@@ -1572,7 +1575,8 @@ void MCAsmStreamer::printDwarfFileDirective(
Expected<unsigned> MCAsmStreamer::tryEmitDwarfFileDirective(
unsigned FileNo, StringRef Directory, StringRef Filename,
- Optional<MD5::MD5Result> Checksum, Optional<StringRef> Source, unsigned CUID) {
+ Optional<MD5::MD5Result> Checksum, std::optional<StringRef> Source,
+ unsigned CUID) {
assert(CUID == 0 && "multiple CUs not supported by MCAsmStreamer");
MCDwarfLineTable &Table = getContext().getMCDwarfLineTable(CUID);
@@ -1606,7 +1610,7 @@ Expected<unsigned> MCAsmStreamer::tryEmitDwarfFileDirective(
void MCAsmStreamer::emitDwarfFile0Directive(StringRef Directory,
StringRef Filename,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source,
+ std::optional<StringRef> Source,
unsigned CUID) {
assert(CUID == 0);
// .file 0 is new for DWARF v5.
diff --git a/llvm/lib/MC/MCContext.cpp b/llvm/lib/MC/MCContext.cpp
index e504a6b0ed1b..773738c8f282 100644
--- a/llvm/lib/MC/MCContext.cpp
+++ b/llvm/lib/MC/MCContext.cpp
@@ -54,6 +54,7 @@
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <cstdlib>
+#include <optional>
#include <tuple>
#include <utility>
@@ -972,7 +973,7 @@ Expected<unsigned> MCContext::getDwarfFile(StringRef Directory,
StringRef FileName,
unsigned FileNumber,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source,
+ std::optional<StringRef> Source,
unsigned CUID) {
MCDwarfLineTable &Table = MCDwarfLineTablesCUMap[CUID];
return Table.tryGetFile(Directory, FileName, Checksum, Source, DwarfVersion,
diff --git a/llvm/lib/MC/MCDwarf.cpp b/llvm/lib/MC/MCDwarf.cpp
index 136c40db825a..c129157657c3 100644
--- a/llvm/lib/MC/MCDwarf.cpp
+++ b/llvm/lib/MC/MCDwarf.cpp
@@ -38,6 +38,7 @@
#include "llvm/Support/raw_ostream.h"
#include <cassert>
#include <cstdint>
+#include <optional>
#include <string>
#include <utility>
#include <vector>
@@ -562,7 +563,7 @@ void MCDwarfLineTable::emitCU(MCStreamer *MCOS, MCDwarfLineTableParams Params,
Expected<unsigned> MCDwarfLineTable::tryGetFile(StringRef &Directory,
StringRef &FileName,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source,
+ std::optional<StringRef> Source,
uint16_t DwarfVersion,
unsigned FileNumber) {
return Header.tryGetFile(Directory, FileName, Checksum, Source, DwarfVersion,
@@ -580,7 +581,7 @@ Expected<unsigned>
MCDwarfLineTableHeader::tryGetFile(StringRef &Directory,
StringRef &FileName,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source,
+ std::optional<StringRef> Source,
uint16_t DwarfVersion,
unsigned FileNumber) {
if (Directory == CompilationDir)
diff --git a/llvm/lib/MC/MCParser/AsmParser.cpp b/llvm/lib/MC/MCParser/AsmParser.cpp
index 343ac3b59459..767c467f21ad 100644
--- a/llvm/lib/MC/MCParser/AsmParser.cpp
+++ b/llvm/lib/MC/MCParser/AsmParser.cpp
@@ -64,6 +64,7 @@
#include <cstdint>
#include <deque>
#include <memory>
+#include <optional>
#include <sstream>
#include <string>
#include <tuple>
@@ -3538,7 +3539,7 @@ bool AsmParser::parseDirectiveFile(SMLoc DirectiveLoc) {
uint64_t MD5Hi, MD5Lo;
bool HasMD5 = false;
- Optional<StringRef> Source;
+ std::optional<StringRef> Source;
bool HasSource = false;
std::string SourceString;
diff --git a/llvm/lib/MC/MCParser/MasmParser.cpp b/llvm/lib/MC/MCParser/MasmParser.cpp
index e7d2dd098cc8..fa419c882534 100644
--- a/llvm/lib/MC/MCParser/MasmParser.cpp
+++ b/llvm/lib/MC/MCParser/MasmParser.cpp
@@ -4844,7 +4844,7 @@ bool MasmParser::parseDirectiveFile(SMLoc DirectiveLoc) {
uint64_t MD5Hi, MD5Lo;
bool HasMD5 = false;
- Optional<StringRef> Source;
+ std::optional<StringRef> Source;
bool HasSource = false;
std::string SourceString;
diff --git a/llvm/lib/MC/MCStreamer.cpp b/llvm/lib/MC/MCStreamer.cpp
index 805ca571002a..5f999b3d652c 100644
--- a/llvm/lib/MC/MCStreamer.cpp
+++ b/llvm/lib/MC/MCStreamer.cpp
@@ -39,6 +39,7 @@
#include <cassert>
#include <cstdint>
#include <cstdlib>
+#include <optional>
#include <utility>
using namespace llvm;
@@ -230,7 +231,7 @@ Expected<unsigned>
MCStreamer::tryEmitDwarfFileDirective(unsigned FileNo, StringRef Directory,
StringRef Filename,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source,
+ std::optional<StringRef> Source,
unsigned CUID) {
return getContext().getDwarfFile(Directory, Filename, FileNo, Checksum,
Source, CUID);
@@ -239,7 +240,7 @@ MCStreamer::tryEmitDwarfFileDirective(unsigned FileNo, StringRef Directory,
void MCStreamer::emitDwarfFile0Directive(StringRef Directory,
StringRef Filename,
Optional<MD5::MD5Result> Checksum,
- Optional<StringRef> Source,
+ std::optional<StringRef> Source,
unsigned CUID) {
getContext().setMCLineTableRootFile(CUID, Directory, Filename, Checksum,
Source);
diff --git a/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp b/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp
index 03ee685d5212..becd221e1e86 100644
--- a/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp
+++ b/llvm/lib/Target/X86/X86DiscriminateMemOps.cpp
@@ -23,6 +23,7 @@
#include "llvm/ProfileData/SampleProfReader.h"
#include "llvm/Support/Debug.h"
#include "llvm/Transforms/IPO/SampleProfile.h"
+#include <optional>
using namespace llvm;
#define DEBUG_TYPE "x86-discriminate-memops"
@@ -144,8 +145,8 @@ bool X86DiscriminateMemOps::runOnMachineFunction(MachineFunction &MF) {
if (!TryInsert.second || !HasDebug) {
unsigned BF, DF, CI = 0;
DILocation::decodeDiscriminator(DI->getDiscriminator(), BF, DF, CI);
- Optional<unsigned> EncodedDiscriminator = DILocation::encodeDiscriminator(
- MemOpDiscriminators[L] + 1, DF, CI);
+ std::optional<unsigned> EncodedDiscriminator =
+ DILocation::encodeDiscriminator(MemOpDiscriminators[L] + 1, DF, CI);
if (!EncodedDiscriminator) {
// FIXME(mtrofin): The assumption is that this scenario is infrequent/OK
diff --git a/llvm/lib/Transforms/Utils/Debugify.cpp b/llvm/lib/Transforms/Utils/Debugify.cpp
index d814c5ec4b9d..f4d9bce72dc3 100644
--- a/llvm/lib/Transforms/Utils/Debugify.cpp
+++ b/llvm/lib/Transforms/Utils/Debugify.cpp
@@ -27,6 +27,7 @@
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/JSON.h"
+#include <optional>
#define DEBUG_TYPE "debugify"
@@ -680,7 +681,7 @@ bool diagnoseMisSizedDbgValue(Module &M, DbgValueInst *DVI) {
Type *Ty = V->getType();
uint64_t ValueOperandSize = getAllocSizeInBits(M, Ty);
- Optional<uint64_t> DbgVarSize = DVI->getFragmentSizeInBits();
+ std::optional<uint64_t> DbgVarSize = DVI->getFragmentSizeInBits();
if (!ValueOperandSize || !DbgVarSize)
return false;
diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp
index 86949945550f..ffdba22512a2 100644
--- a/llvm/lib/Transforms/Utils/Local.cpp
+++ b/llvm/lib/Transforms/Utils/Local.cpp
@@ -1473,7 +1473,7 @@ static bool PhiHasDebugValue(DILocalVariable *DIVar,
static bool valueCoversEntireFragment(Type *ValTy, DbgVariableIntrinsic *DII) {
const DataLayout &DL = DII->getModule()->getDataLayout();
TypeSize ValueSize = DL.getTypeAllocSizeInBits(ValTy);
- if (Optional<uint64_t> FragmentSize = DII->getFragmentSizeInBits()) {
+ if (std::optional<uint64_t> FragmentSize = DII->getFragmentSizeInBits()) {
assert(!ValueSize.isScalable() &&
"Fragments don't work on scalable types.");
return ValueSize.getFixedSize() >= *FragmentSize;
diff --git a/llvm/lib/Transforms/Utils/MemoryOpRemark.cpp b/llvm/lib/Transforms/Utils/MemoryOpRemark.cpp
index dbef880014ac..c31b472978eb 100644
--- a/llvm/lib/Transforms/Utils/MemoryOpRemark.cpp
+++ b/llvm/lib/Transforms/Utils/MemoryOpRemark.cpp
@@ -16,6 +16,7 @@
#include "llvm/IR/DebugInfo.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
+#include <optional>
using namespace llvm;
using namespace llvm::ore;
@@ -144,7 +145,8 @@ static void inlineVolatileOrAtomicWithExtraArgs(bool *Inline, bool Volatile,
R << " Atomic: " << NV("StoreAtomic", false) << ".";
}
-static Optional<uint64_t> getSizeInBytes(Optional<uint64_t> SizeInBits) {
+static std::optional<uint64_t>
+getSizeInBytes(std::optional<uint64_t> SizeInBits) {
if (!SizeInBits || *SizeInBits % 8 != 0)
return std::nullopt;
return *SizeInBits / 8;
@@ -297,7 +299,7 @@ void MemoryOpRemark::visitSizeOperand(Value *V, DiagnosticInfoIROptimization &R)
}
}
-static Optional<StringRef> nameOrNone(const Value *V) {
+static std::optional<StringRef> nameOrNone(const Value *V) {
if (V->hasName())
return V->getName();
return std::nullopt;
@@ -321,7 +323,7 @@ void MemoryOpRemark::visitVariable(const Value *V,
for (const DbgVariableIntrinsic *DVI :
FindDbgAddrUses(const_cast<Value *>(V))) {
if (DILocalVariable *DILV = DVI->getVariable()) {
- Optional<uint64_t> DISize = getSizeInBytes(DILV->getSizeInBits());
+ std::optional<uint64_t> DISize = getSizeInBytes(DILV->getSizeInBits());
VariableInfo Var{DILV->getName(), DISize};
if (!Var.isEmpty()) {
Result.push_back(std::move(Var));
@@ -340,7 +342,7 @@ void MemoryOpRemark::visitVariable(const Value *V,
// If not, get it from the alloca.
Optional<TypeSize> TySize = AI->getAllocationSizeInBits(DL);
- Optional<uint64_t> Size =
+ std::optional<uint64_t> Size =
TySize ? getSizeInBytes(TySize->getFixedSize()) : std::nullopt;
VariableInfo Var{nameOrNone(AI), Size};
if (!Var.isEmpty())
diff --git a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
index 64ff66277b04..c5a9e6e29f3e 100644
--- a/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
+++ b/llvm/unittests/Frontend/OpenMPIRBuilderTest.cpp
@@ -20,6 +20,7 @@
#include "llvm/Support/Casting.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
#include "gtest/gtest.h"
+#include <optional>
using namespace llvm;
using namespace omp;
@@ -170,7 +171,7 @@ class OpenMPIRBuilderTest : public testing::Test {
DIBuilder DIB(*M);
auto File = DIB.createFile("test.dbg", "/src", std::nullopt,
- Optional<StringRef>("/src/test.dbg"));
+ std::optional<StringRef>("/src/test.dbg"));
auto CU =
DIB.createCompileUnit(dwarf::DW_LANG_C, File, "llvm-C", true, "", 0);
auto Type =
diff --git a/llvm/unittests/IR/MetadataTest.cpp b/llvm/unittests/IR/MetadataTest.cpp
index fcb0b296941a..bdab1f60d093 100644
--- a/llvm/unittests/IR/MetadataTest.cpp
+++ b/llvm/unittests/IR/MetadataTest.cpp
@@ -22,6 +22,7 @@
#include "llvm/IR/Verifier.h"
#include "llvm/Support/raw_ostream.h"
#include "gtest/gtest.h"
+#include <optional>
using namespace llvm;
namespace {
@@ -3016,7 +3017,7 @@ TEST_F(DIExpressionTest, createFragmentExpression) {
} while (false)
// createFragmentExpression adds correct ops.
- Optional<DIExpression*> R = DIExpression::createFragmentExpression(
+ std::optional<DIExpression*> R = DIExpression::createFragmentExpression(
DIExpression::get(Context, {}), 0, 32);
EXPECT_EQ(R.has_value(), true);
EXPECT_EQ(3u, (*R)->getNumElements());
More information about the cfe-commits
mailing list