[llvm] 54ee8bb - [funcattrs] Use getDataOperandNo where appropriate [NFC]
Philip Reames via llvm-commits
llvm-commits at lists.llvm.org
Fri Dec 17 09:36:11 PST 2021
Author: Philip Reames
Date: 2021-12-17T09:35:29-08:00
New Revision: 54ee8bb73af38f90ff055afc3c5b2934d7fe2002
URL: https://github.com/llvm/llvm-project/commit/54ee8bb73af38f90ff055afc3c5b2934d7fe2002
DIFF: https://github.com/llvm/llvm-project/commit/54ee8bb73af38f90ff055afc3c5b2934d7fe2002.diff
LOG: [funcattrs] Use getDataOperandNo where appropriate [NFC]
We'd manually duplicated the same logic and assertions; we can use the utility instead.
Added:
Modified:
llvm/lib/Transforms/IPO/FunctionAttrs.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp b/llvm/lib/Transforms/IPO/FunctionAttrs.cpp
index 8c8aea465c49..3ef38f0c108d 100644
--- a/llvm/lib/Transforms/IPO/FunctionAttrs.cpp
+++ b/llvm/lib/Transforms/IPO/FunctionAttrs.cpp
@@ -581,16 +581,8 @@ struct ArgumentUsesTracker : public CaptureTracker {
return true;
}
- // Note: the callee and the two successor blocks *follow* the argument
- // operands. This means there is no need to adjust UseIndex to account for
- // these.
-
- unsigned UseIndex =
- std::distance(const_cast<const Use *>(CB->arg_begin()), U);
-
- assert(UseIndex < CB->data_operands_size() &&
- "Indirect function calls should have been filtered above!");
-
+ assert(!CB->isCallee(U) && "callee operand reported captured?");
+ const unsigned UseIndex = CB->getDataOperandNo(U);
if (UseIndex >= CB->arg_size()) {
// Data operand, but not a argument operand -- must be a bundle operand
assert(CB->hasOperandBundles() && "Must be!");
@@ -722,20 +714,10 @@ determinePointerAccessAttrs(Argument *A,
return Attribute::None;
}
- // Note: the callee and the two successor blocks *follow* the argument
- // operands. This means there is no need to adjust UseIndex to account
- // for these.
-
- unsigned UseIndex = std::distance(CB.arg_begin(), U);
-
- // U cannot be the callee operand use: since we're exploring the
- // transitive uses of an Argument, having such a use be a callee would
- // imply the call site is an indirect call or invoke; and we'd take the
- // early exit above.
- assert(UseIndex < CB.data_operands_size() &&
- "Data operand use expected!");
-
- bool IsOperandBundleUse = UseIndex >= CB.arg_size();
+ // Given we've explictily handled the callee operand above, what's left
+ // must be a data operand (e.g. argument or operand bundle)
+ const unsigned UseIndex = CB.getDataOperandNo(U);
+ const bool IsOperandBundleUse = UseIndex >= CB.arg_size();
if (UseIndex >= F->arg_size() && !IsOperandBundleUse) {
assert(F->isVarArg() && "More params than args in non-varargs call");
More information about the llvm-commits
mailing list