diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2023-04-14 21:41:27 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2023-06-22 18:20:56 +0000 |
commit | bdd1243df58e60e85101c09001d9812a789b6bc4 (patch) | |
tree | a1ce621c7301dd47ba2ddc3b8eaa63b441389481 /contrib/llvm-project/llvm/lib/Transforms/Utils/ValueMapper.cpp | |
parent | 781624ca2d054430052c828ba8d2c2eaf2d733e7 (diff) | |
parent | e3b557809604d036af6e00c60f012c2025b59a5e (diff) |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Transforms/Utils/ValueMapper.cpp')
-rw-r--r-- | contrib/llvm-project/llvm/lib/Transforms/Utils/ValueMapper.cpp | 55 |
1 files changed, 27 insertions, 28 deletions
diff --git a/contrib/llvm-project/llvm/lib/Transforms/Utils/ValueMapper.cpp b/contrib/llvm-project/llvm/lib/Transforms/Utils/ValueMapper.cpp index 8947303674ee..a5edbb2acc6d 100644 --- a/contrib/llvm-project/llvm/lib/Transforms/Utils/ValueMapper.cpp +++ b/contrib/llvm-project/llvm/lib/Transforms/Utils/ValueMapper.cpp @@ -15,8 +15,6 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/DenseMap.h" #include "llvm/ADT/DenseSet.h" -#include "llvm/ADT/None.h" -#include "llvm/ADT/Optional.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallVector.h" #include "llvm/IR/Argument.h" @@ -181,7 +179,7 @@ private: Value *mapBlockAddress(const BlockAddress &BA); /// Map metadata that doesn't require visiting operands. - Optional<Metadata *> mapSimpleMetadata(const Metadata *MD); + std::optional<Metadata *> mapSimpleMetadata(const Metadata *MD); Metadata *mapToMetadata(const Metadata *Key, Metadata *Val); Metadata *mapToSelf(const Metadata *MD); @@ -270,9 +268,10 @@ private: /// MDNode, compute and return the mapping. If it's a distinct \a MDNode, /// return the result of \a mapDistinctNode(). /// - /// \return None if \c Op is an unmapped uniqued \a MDNode. - /// \post getMappedOp(Op) only returns None if this returns None. - Optional<Metadata *> tryToMapOperand(const Metadata *Op); + /// \return std::nullopt if \c Op is an unmapped uniqued \a MDNode. + /// \post getMappedOp(Op) only returns std::nullopt if this returns + /// std::nullopt. + std::optional<Metadata *> tryToMapOperand(const Metadata *Op); /// Map a distinct node. /// @@ -284,7 +283,7 @@ private: MDNode *mapDistinctNode(const MDNode &N); /// Get a previously mapped node. - Optional<Metadata *> getMappedOp(const Metadata *Op) const; + std::optional<Metadata *> getMappedOp(const Metadata *Op) const; /// Create a post-order traversal of an unmapped uniqued node subgraph. /// @@ -317,11 +316,10 @@ private: /// This visits all the nodes in \c G in post-order, using the identity /// mapping or creating a new node depending on \a Data::HasChanged. /// - /// \pre \a getMappedOp() returns None for nodes in \c G, but not for any of - /// their operands outside of \c G. - /// \pre \a Data::HasChanged is true for a node in \c G iff any of its - /// operands have changed. - /// \post \a getMappedOp() returns the mapped node for every node in \c G. + /// \pre \a getMappedOp() returns std::nullopt for nodes in \c G, but not for + /// any of their operands outside of \c G. \pre \a Data::HasChanged is true + /// for a node in \c G iff any of its operands have changed. \post \a + /// getMappedOp() returns the mapped node for every node in \c G. void mapNodesInPOT(UniquedGraph &G); /// Remap a node's operands using the given functor. @@ -391,8 +389,9 @@ Value *Mapper::mapValue(const Value *V) { // ensures metadata operands only reference defined SSA values. return (Flags & RF_IgnoreMissingLocals) ? nullptr - : MetadataAsValue::get(V->getContext(), - MDTuple::get(V->getContext(), None)); + : MetadataAsValue::get( + V->getContext(), + MDTuple::get(V->getContext(), std::nullopt)); } if (auto *AL = dyn_cast<DIArgList>(MD)) { SmallVector<ValueAsMetadata *, 4> MappedArgs; @@ -558,11 +557,11 @@ Metadata *Mapper::mapToSelf(const Metadata *MD) { return mapToMetadata(MD, const_cast<Metadata *>(MD)); } -Optional<Metadata *> MDNodeMapper::tryToMapOperand(const Metadata *Op) { +std::optional<Metadata *> MDNodeMapper::tryToMapOperand(const Metadata *Op) { if (!Op) return nullptr; - if (Optional<Metadata *> MappedOp = M.mapSimpleMetadata(Op)) { + if (std::optional<Metadata *> MappedOp = M.mapSimpleMetadata(Op)) { #ifndef NDEBUG if (auto *CMD = dyn_cast<ConstantAsMetadata>(Op)) assert((!*MappedOp || M.getVM().count(CMD->getValue()) || @@ -578,7 +577,7 @@ Optional<Metadata *> MDNodeMapper::tryToMapOperand(const Metadata *Op) { const MDNode &N = *cast<MDNode>(Op); if (N.isDistinct()) return mapDistinctNode(N); - return None; + return std::nullopt; } MDNode *MDNodeMapper::mapDistinctNode(const MDNode &N) { @@ -606,11 +605,11 @@ static ConstantAsMetadata *wrapConstantAsMetadata(const ConstantAsMetadata &CMD, return MappedV ? ConstantAsMetadata::getConstant(MappedV) : nullptr; } -Optional<Metadata *> MDNodeMapper::getMappedOp(const Metadata *Op) const { +std::optional<Metadata *> MDNodeMapper::getMappedOp(const Metadata *Op) const { if (!Op) return nullptr; - if (Optional<Metadata *> MappedOp = M.getVM().getMappedMD(Op)) + if (std::optional<Metadata *> MappedOp = M.getVM().getMappedMD(Op)) return *MappedOp; if (isa<MDString>(Op)) @@ -619,7 +618,7 @@ Optional<Metadata *> MDNodeMapper::getMappedOp(const Metadata *Op) const { if (auto *CMD = dyn_cast<ConstantAsMetadata>(Op)) return wrapConstantAsMetadata(*CMD, M.getVM().lookup(CMD->getValue())); - return None; + return std::nullopt; } Metadata &MDNodeMapper::UniquedGraph::getFwdReference(MDNode &Op) { @@ -704,7 +703,7 @@ MDNode *MDNodeMapper::visitOperands(UniquedGraph &G, MDNode::op_iterator &I, MDNode::op_iterator E, bool &HasChanged) { while (I != E) { Metadata *Op = *I++; // Increment even on early return. - if (Optional<Metadata *> MappedOp = tryToMapOperand(Op)) { + if (std::optional<Metadata *> MappedOp = tryToMapOperand(Op)) { // Check if the operand changes. HasChanged |= Op != *MappedOp; continue; @@ -757,7 +756,7 @@ void MDNodeMapper::mapNodesInPOT(UniquedGraph &G) { // Clone the uniqued node and remap the operands. TempMDNode ClonedN = D.Placeholder ? std::move(D.Placeholder) : N->clone(); remapOperands(*ClonedN, [this, &D, &G](Metadata *Old) { - if (Optional<Metadata *> MappedOp = getMappedOp(Old)) + if (std::optional<Metadata *> MappedOp = getMappedOp(Old)) return *MappedOp; (void)D; assert(G.Info[Old].ID > D.ID && "Expected a forward reference"); @@ -796,7 +795,7 @@ Metadata *MDNodeMapper::map(const MDNode &N) { N.isUniqued() ? mapTopLevelUniquedNode(N) : mapDistinctNode(N); while (!DistinctWorklist.empty()) remapOperands(*DistinctWorklist.pop_back_val(), [this](Metadata *Old) { - if (Optional<Metadata *> MappedOp = tryToMapOperand(Old)) + if (std::optional<Metadata *> MappedOp = tryToMapOperand(Old)) return *MappedOp; return mapTopLevelUniquedNode(*cast<MDNode>(Old)); }); @@ -825,9 +824,9 @@ Metadata *MDNodeMapper::mapTopLevelUniquedNode(const MDNode &FirstN) { return *getMappedOp(&FirstN); } -Optional<Metadata *> Mapper::mapSimpleMetadata(const Metadata *MD) { +std::optional<Metadata *> Mapper::mapSimpleMetadata(const Metadata *MD) { // If the value already exists in the map, use it. - if (Optional<Metadata *> NewMD = getVM().getMappedMD(MD)) + if (std::optional<Metadata *> NewMD = getVM().getMappedMD(MD)) return *NewMD; if (isa<MDString>(MD)) @@ -848,14 +847,14 @@ Optional<Metadata *> Mapper::mapSimpleMetadata(const Metadata *MD) { assert(isa<MDNode>(MD) && "Expected a metadata node"); - return None; + return std::nullopt; } Metadata *Mapper::mapMetadata(const Metadata *MD) { assert(MD && "Expected valid metadata"); assert(!isa<LocalAsMetadata>(MD) && "Unexpected local metadata"); - if (Optional<Metadata *> NewMD = mapSimpleMetadata(MD)) + if (std::optional<Metadata *> NewMD = mapSimpleMetadata(MD)) return *NewMD; return MDNodeMapper(*this).map(*cast<MDNode>(MD)); @@ -881,7 +880,7 @@ void Mapper::flush() { AppendingInits.resize(PrefixSize); mapAppendingVariable(*E.Data.AppendingGV.GV, E.Data.AppendingGV.InitPrefix, - E.AppendingGVIsOldCtorDtor, makeArrayRef(NewInits)); + E.AppendingGVIsOldCtorDtor, ArrayRef(NewInits)); break; } case WorklistEntry::MapAliasOrIFunc: { |