[PATCH] D103556: [Attributor] Allow lookupAAFor to return null on invalid state
Joseph Huber via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 2 14:35:13 PDT 2021
jhuber6 created this revision.
jhuber6 added a reviewer: jdoerfert.
Herald added a reviewer: uenoku.
Herald added subscribers: ormris, okura, kuter, uenoku.
Herald added a reviewer: homerdin.
jhuber6 requested review of this revision.
Herald added a reviewer: sstefan1.
Herald added a reviewer: baziotis.
Herald added subscribers: llvm-commits, bbn.
Herald added a project: LLVM.
This patch adds an option to `lookupAAFor` that allows it to return a
nullptr if the state of the looked up attribute is invalid. This is so
future passes can use this to query other attributes with the guarantee
that they are valid.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D103556
Files:
llvm/include/llvm/Transforms/IPO/Attributor.h
Index: llvm/include/llvm/Transforms/IPO/Attributor.h
===================================================================
--- llvm/include/llvm/Transforms/IPO/Attributor.h
+++ llvm/include/llvm/Transforms/IPO/Attributor.h
@@ -1218,12 +1218,13 @@
DepClassTy::NONE);
}
- /// Return the attribute of \p AAType for \p IRP if existing. This also allows
- /// non-AA users lookup.
+ /// Return the attribute of \p AAType for \p IRP if existing and valid. This
+ /// also allows non-AA users lookup.
template <typename AAType>
AAType *lookupAAFor(const IRPosition &IRP,
const AbstractAttribute *QueryingAA = nullptr,
- DepClassTy DepClass = DepClassTy::OPTIONAL) {
+ DepClassTy DepClass = DepClassTy::OPTIONAL,
+ bool AllowInvalidState = true) {
static_assert(std::is_base_of<AbstractAttribute, AAType>::value,
"Cannot query an attribute with a type not derived from "
"'AbstractAttribute'!");
@@ -1240,6 +1241,10 @@
AA->getState().isValidState())
recordDependence(*AA, const_cast<AbstractAttribute &>(*QueryingAA),
DepClass);
+
+ // Return nullptr if this attribute has an invalid state.
+ if (!AllowInvalidState && !AA->getState().isValidState())
+ return nullptr;
return AA;
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D103556.349382.patch
Type: text/x-patch
Size: 1415 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210602/63bfa819/attachment.bin>
More information about the llvm-commits
mailing list