OutFile << "boltedcollection\n";
if (opts::BasicAggregation) {
OutFile << "no_lbr";
- for (const StringMapEntry<NoneType> &Entry : EventNames)
+ for (const StringMapEntry<std::nullopt_t> &Entry : EventNames)
OutFile << " " << Entry.getKey();
OutFile << "\n";
StringSet<> EventNames = RI.getProfileReader()->getEventNames();
if (!EventNames.empty()) {
std::string Sep;
- for (const StringMapEntry<NoneType> &EventEntry : EventNames) {
+ for (const StringMapEntry<std::nullopt_t> &EventEntry : EventNames) {
BP.Header.EventNames += Sep + EventEntry.first().str();
Sep = ",";
}
public:
explicit NameLookup(const NamedDecl *ND) : Data(ND, false) {}
- explicit NameLookup(llvm::NoneType) : Data(nullptr, true) {}
+ explicit NameLookup(std::nullopt_t) : Data(nullptr, true) {}
explicit NameLookup(std::nullptr_t) : Data(nullptr, false) {}
NameLookup() : NameLookup(nullptr) {}
/// Obtain a vfs::FileSystem with an arbitrary initial working directory.
llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>
- view(llvm::NoneType CWD) const {
+ view(std::nullopt_t CWD) const {
return viewImpl();
}
/// Set the bit associated with a particular CFGBlock.
/// This is the important method for the SetType template parameter.
- std::pair<llvm::NoneType, bool> insert(const CFGBlock *Block) {
+ std::pair<std::nullopt_t, bool> insert(const CFGBlock *Block) {
// Note that insert() is called by po_iterator, which doesn't check to
// make sure that Block is non-null. Moreover, the CFGBlock iterator will
// occasionally hand out null pointers for pruned edges, so we catch those
OptionalDirectoryEntryRefDegradesToDirectoryEntryPtr &
operator=(const OptionalDirectoryEntryRefDegradesToDirectoryEntryPtr &) = default;
- OptionalDirectoryEntryRefDegradesToDirectoryEntryPtr(llvm::NoneType) {}
+ OptionalDirectoryEntryRefDegradesToDirectoryEntryPtr(std::nullopt_t) {}
OptionalDirectoryEntryRefDegradesToDirectoryEntryPtr(DirectoryEntryRef Ref)
: Optional<DirectoryEntryRef>(Ref) {}
OptionalDirectoryEntryRefDegradesToDirectoryEntryPtr(Optional<DirectoryEntryRef> MaybeRef)
: Optional<DirectoryEntryRef>(MaybeRef) {}
- OptionalDirectoryEntryRefDegradesToDirectoryEntryPtr &operator=(llvm::NoneType) {
+ OptionalDirectoryEntryRefDegradesToDirectoryEntryPtr &
+ operator=(std::nullopt_t) {
Optional<DirectoryEntryRef>::operator=(None);
return *this;
}
OptionalFileEntryRefDegradesToFileEntryPtr &
operator=(const OptionalFileEntryRefDegradesToFileEntryPtr &) = default;
- OptionalFileEntryRefDegradesToFileEntryPtr(llvm::NoneType) {}
+ OptionalFileEntryRefDegradesToFileEntryPtr(std::nullopt_t) {}
OptionalFileEntryRefDegradesToFileEntryPtr(FileEntryRef Ref)
: Optional<FileEntryRef>(Ref) {}
OptionalFileEntryRefDegradesToFileEntryPtr(Optional<FileEntryRef> MaybeRef)
: Optional<FileEntryRef>(MaybeRef) {}
- OptionalFileEntryRefDegradesToFileEntryPtr &operator=(llvm::NoneType) {
+ OptionalFileEntryRefDegradesToFileEntryPtr &operator=(std::nullopt_t) {
Optional<FileEntryRef>::operator=(None);
return *this;
}
TemplateArgumentLists.push_back({{}, Args});
}
- void addOuterTemplateArguments(llvm::NoneType) {
+ void addOuterTemplateArguments(std::nullopt_t) {
assert(!NumRetainedOuterLevels &&
"substituted args outside retained args?");
TemplateArgumentLists.push_back({});
// Emit an unsupported bit_cast type error. Sema refuses to build a bit_cast
// with an invalid type, so anything left is a deficiency on our part (FIXME).
// Ideally this will be unreachable.
- llvm::NoneType unsupportedType(QualType Ty) {
+ std::nullopt_t unsupportedType(QualType Ty) {
Info.FFDiag(BCE->getBeginLoc(),
diag::note_constexpr_bit_cast_unsupported_type)
<< Ty;
return None;
}
- llvm::NoneType unrepresentableValue(QualType Ty, const APSInt &Val) {
+ std::nullopt_t unrepresentableValue(QualType Ty, const APSInt &Val) {
Info.FFDiag(BCE->getBeginLoc(),
diag::note_constexpr_bit_cast_unrepresentable_value)
<< Ty << toString(Val, /*Radix=*/10);
// Parses a single expected character \c c from \c State, skipping preceding
// whitespace. Error if the expected character isn't found.
-static ExpectedProgress<llvm::NoneType> parseChar(char c, ParseState State) {
+static ExpectedProgress<std::nullopt_t> parseChar(char c, ParseState State) {
State.Input = consumeWhitespace(State.Input);
if (State.Input.empty() || State.Input.front() != c)
return makeParseError(State,
using Base = llvm::Optional<Dur<Ratio>>;
public:
- Timeout(llvm::NoneType none) : Base(none) {}
+ Timeout(std::nullopt_t none) : Base(none) {}
template <typename Ratio2,
typename = typename EnableIf<int64_t, Ratio2>::type>
} // namespace
char ScratchTypeSystemClang::ID;
-const llvm::NoneType ScratchTypeSystemClang::DefaultAST = llvm::None;
+const std::nullopt_t ScratchTypeSystemClang::DefaultAST = llvm::None;
ScratchTypeSystemClang::ScratchTypeSystemClang(Target &target,
llvm::Triple triple)
/// Alias for requesting the default scratch TypeSystemClang in GetForTarget.
// This isn't constexpr as gtest/llvm::Optional comparison logic is trying
// to get the address of this for pretty-printing.
- static const llvm::NoneType DefaultAST;
+ static const std::nullopt_t DefaultAST;
/// Infers the appropriate sub-AST from Clang's LangOptions.
static llvm::Optional<IsolatedASTKind>
/*implicit*/ ArrayRef() = default;
/// Construct an empty ArrayRef from None.
- /*implicit*/ ArrayRef(NoneType) {}
+ /*implicit*/ ArrayRef(std::nullopt_t) {}
/// Construct an ArrayRef from a single element.
/*implicit*/ ArrayRef(const T &OneElt)
/*implicit*/ MutableArrayRef() = default;
/// Construct an empty MutableArrayRef from None.
- /*implicit*/ MutableArrayRef(NoneType) : ArrayRef<T>() {}
+ /*implicit*/ MutableArrayRef(std::nullopt_t) : ArrayRef<T>() {}
/// Construct a MutableArrayRef from a single element.
/*implicit*/ MutableArrayRef(T &OneElt) : ArrayRef<T>(OneElt) {}
using value_type = T;
constexpr Optional() = default;
- constexpr Optional(NoneType) {}
+ constexpr Optional(std::nullopt_t) {}
constexpr Optional(const T &y) : Storage(std::in_place, y) {}
constexpr Optional(const Optional &O) = default;
}
template <typename T>
-constexpr bool operator==(const Optional<T> &X, NoneType) {
+constexpr bool operator==(const Optional<T> &X, std::nullopt_t) {
return !X;
}
template <typename T>
-constexpr bool operator==(NoneType, const Optional<T> &X) {
+constexpr bool operator==(std::nullopt_t, const Optional<T> &X) {
return X == None;
}
template <typename T>
-constexpr bool operator!=(const Optional<T> &X, NoneType) {
+constexpr bool operator!=(const Optional<T> &X, std::nullopt_t) {
return !(X == None);
}
template <typename T>
-constexpr bool operator!=(NoneType, const Optional<T> &X) {
+constexpr bool operator!=(std::nullopt_t, const Optional<T> &X) {
return X != None;
}
-template <typename T> constexpr bool operator<(const Optional<T> &, NoneType) {
+template <typename T>
+constexpr bool operator<(const Optional<T> &, std::nullopt_t) {
return false;
}
-template <typename T> constexpr bool operator<(NoneType, const Optional<T> &X) {
+template <typename T>
+constexpr bool operator<(std::nullopt_t, const Optional<T> &X) {
return X.has_value();
}
template <typename T>
-constexpr bool operator<=(const Optional<T> &X, NoneType) {
+constexpr bool operator<=(const Optional<T> &X, std::nullopt_t) {
return !(None < X);
}
template <typename T>
-constexpr bool operator<=(NoneType, const Optional<T> &X) {
+constexpr bool operator<=(std::nullopt_t, const Optional<T> &X) {
return !(X < None);
}
-template <typename T> constexpr bool operator>(const Optional<T> &X, NoneType) {
+template <typename T>
+constexpr bool operator>(const Optional<T> &X, std::nullopt_t) {
return None < X;
}
-template <typename T> constexpr bool operator>(NoneType, const Optional<T> &X) {
+template <typename T>
+constexpr bool operator>(std::nullopt_t, const Optional<T> &X) {
return X < None;
}
template <typename T>
-constexpr bool operator>=(const Optional<T> &X, NoneType) {
+constexpr bool operator>=(const Optional<T> &X, std::nullopt_t) {
return None <= X;
}
template <typename T>
-constexpr bool operator>=(NoneType, const Optional<T> &X) {
+constexpr bool operator>=(std::nullopt_t, const Optional<T> &X) {
return X <= None;
}
return !(X < Y);
}
-raw_ostream &operator<<(raw_ostream &OS, NoneType);
+raw_ostream &operator<<(raw_ostream &OS, std::nullopt_t);
template <typename T, typename = decltype(std::declval<raw_ostream &>()
<< std::declval<const T &>())>
void setValue(const ValueTy &V) { second = V; }
};
-template <> class StringMapEntryStorage<NoneType> : public StringMapEntryBase {
+template <>
+class StringMapEntryStorage<std::nullopt_t> : public StringMapEntryBase {
public:
- explicit StringMapEntryStorage(size_t keyLength, NoneType = None)
+ explicit StringMapEntryStorage(size_t keyLength, std::nullopt_t = None)
: StringMapEntryBase(keyLength) {}
StringMapEntryStorage(StringMapEntryStorage &entry) = delete;
- NoneType getValue() const { return None; }
+ std::nullopt_t getValue() const { return None; }
};
/// StringMapEntry - This is used to represent one value that is inserted into
/// StringSet - A wrapper for StringMap that provides set-like functionality.
template <class AllocatorTy = MallocAllocator>
-class StringSet : public StringMap<NoneType, AllocatorTy> {
- using Base = StringMap<NoneType, AllocatorTy>;
+class StringSet : public StringMap<std::nullopt_t, AllocatorTy> {
+ using Base = StringMap<std::nullopt_t, AllocatorTy>;
public:
StringSet() = default;
public:
/// Create a fully general source predicate.
SourcePred(PredT Pred, MakeT Make) : Pred(Pred), Make(Make) {}
- SourcePred(PredT Pred, NoneType) : Pred(Pred) {
+ SourcePred(PredT Pred, std::nullopt_t) : Pred(Pred) {
Make = [Pred](ArrayRef<Value *> Cur, ArrayRef<Type *> BaseTypes) {
// Default filter just calls Pred on each of the base types.
std::vector<Constant *> Result;
SMLoc Start, End;
SMRange() = default;
- SMRange(NoneType) {}
+ SMRange(std::nullopt_t) {}
SMRange(SMLoc St, SMLoc En) : Start(St), End(En) {
assert(Start.isValid() == End.isValid() &&
"Start and End should either both be valid or both be invalid!");
const char *End = nullptr;
public:
- Cursor(NoneType) {}
+ Cursor(std::nullopt_t) {}
explicit Cursor(StringRef Str) {
Ptr = Str.data();
#include "llvm/ADT/Optional.h"
#include "llvm/Support/raw_ostream.h"
-llvm::raw_ostream &llvm::operator<<(raw_ostream &OS, NoneType) {
+llvm::raw_ostream &llvm::operator<<(raw_ostream &OS, std::nullopt_t) {
return OS << "None";
}
OptionalParseResult(ParseResult result) : impl(result) {}
OptionalParseResult(const InFlightDiagnostic &)
: OptionalParseResult(failure()) {}
- OptionalParseResult(llvm::NoneType) : impl(llvm::None) {}
+ OptionalParseResult(std::nullopt_t) : impl(llvm::None) {}
/// Returns true if we contain a valid ParseResult value.
bool has_value() const { return impl.has_value(); }
using size_type = size_t;
NamedAttrList() : dictionarySorted({}, true) {}
- NamedAttrList(llvm::NoneType none) : NamedAttrList() {}
+ NamedAttrList(std::nullopt_t none) : NamedAttrList() {}
NamedAttrList(ArrayRef<NamedAttribute> attributes);
NamedAttrList(DictionaryAttr attributes);
NamedAttrList(const_iterator inStart, const_iterator inEnd);
class OpPrintingFlags {
public:
OpPrintingFlags();
- OpPrintingFlags(llvm::NoneType) : OpPrintingFlags() {}
+ OpPrintingFlags(std::nullopt_t) : OpPrintingFlags() {}
/// Enables the elision of large elements attributes by printing a lexically
/// valid but otherwise meaningless form instead of the element data. The
/// This is a POD type with pointer size, so it should be passed around by
/// value. The underlying data is owned by the `TimingManager`.
class TimingIdentifier {
- using EntryType = llvm::StringMapEntry<llvm::NoneType>;
+ using EntryType = llvm::StringMapEntry<std::nullopt_t>;
public:
TimingIdentifier(const TimingIdentifier &) = default;
llvm::sys::SmartRWMutex<true> identifierMutex;
/// A thread local cache of identifiers to reduce lock contention.
- ThreadLocalCache<llvm::StringMap<llvm::StringMapEntry<llvm::NoneType> *>>
+ ThreadLocalCache<llvm::StringMap<llvm::StringMapEntry<std::nullopt_t> *>>
localIdentifierCache;
TimingManagerImpl() : identifiers(identifierAllocator) {}