[llvm] c4d3188 - [Attributor][NFC] Reduce indention for call site attribute seeding
Johannes Doerfert via llvm-commits
llvm-commits at lists.llvm.org
Thu Apr 16 00:34:09 PDT 2020
Author: Johannes Doerfert
Date: 2020-04-16T02:32:31-05:00
New Revision: c4d3188adb5bc306b3e9f52ba261fa31f724ea5b
URL: https://github.com/llvm/llvm-project/commit/c4d3188adb5bc306b3e9f52ba261fa31f724ea5b
DIFF: https://github.com/llvm/llvm-project/commit/c4d3188adb5bc306b3e9f52ba261fa31f724ea5b.diff
LOG: [Attributor][NFC] Reduce indention for call site attribute seeding
Also added a TODO to remind us that indirect calls could be optimized as
well.
Added:
Modified:
llvm/lib/Transforms/IPO/Attributor.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/IPO/Attributor.cpp b/llvm/lib/Transforms/IPO/Attributor.cpp
index e8e8aed8d31b..365f9bfd6542 100644
--- a/llvm/lib/Transforms/IPO/Attributor.cpp
+++ b/llvm/lib/Transforms/IPO/Attributor.cpp
@@ -1807,54 +1807,58 @@ void Attributor::identifyDefaultAbstractAttributes(Function &F) {
// users. The return value might be dead if there are no live users.
getOrCreateAAFor<AAIsDead>(CSRetPos);
- if (Function *Callee = CS.getCalledFunction()) {
- // Skip declerations except if annotations on their call sites were
- // explicitly requested.
- if (!AnnotateDeclarationCallSites && Callee->isDeclaration() &&
- !Callee->hasMetadata(LLVMContext::MD_callback))
- return true;
+ Function *Callee = CS.getCalledFunction();
+ // TODO: Even if the callee is not known now we might be able to simplify
+ // the call/callee.
+ if (!Callee)
+ return true;
- if (!Callee->getReturnType()->isVoidTy() && !CS->use_empty()) {
+ // Skip declarations except if annotations on their call sites were
+ // explicitly requested.
+ if (!AnnotateDeclarationCallSites && Callee->isDeclaration() &&
+ !Callee->hasMetadata(LLVMContext::MD_callback))
+ return true;
- IRPosition CSRetPos = IRPosition::callsite_returned(CS);
+ if (!Callee->getReturnType()->isVoidTy() && !CS->use_empty()) {
- // Call site return integer values might be limited by a constant range.
- if (Callee->getReturnType()->isIntegerTy())
- getOrCreateAAFor<AAValueConstantRange>(CSRetPos);
- }
+ IRPosition CSRetPos = IRPosition::callsite_returned(CS);
+
+ // Call site return integer values might be limited by a constant range.
+ if (Callee->getReturnType()->isIntegerTy())
+ getOrCreateAAFor<AAValueConstantRange>(CSRetPos);
+ }
- for (int i = 0, e = CS.getNumArgOperands(); i < e; i++) {
+ for (int i = 0, e = CS.getNumArgOperands(); i < e; i++) {
- IRPosition CSArgPos = IRPosition::callsite_argument(CS, i);
+ IRPosition CSArgPos = IRPosition::callsite_argument(CS, i);
- // Every call site argument might be dead.
- getOrCreateAAFor<AAIsDead>(CSArgPos);
+ // Every call site argument might be dead.
+ getOrCreateAAFor<AAIsDead>(CSArgPos);
- // Call site argument might be simplified.
- getOrCreateAAFor<AAValueSimplify>(CSArgPos);
+ // Call site argument might be simplified.
+ getOrCreateAAFor<AAValueSimplify>(CSArgPos);
- if (!CS.getArgument(i)->getType()->isPointerTy())
- continue;
+ if (!CS.getArgument(i)->getType()->isPointerTy())
+ continue;
- // Call site argument attribute "non-null".
- getOrCreateAAFor<AANonNull>(CSArgPos);
+ // Call site argument attribute "non-null".
+ getOrCreateAAFor<AANonNull>(CSArgPos);
- // Call site argument attribute "no-alias".
- getOrCreateAAFor<AANoAlias>(CSArgPos);
+ // Call site argument attribute "no-alias".
+ getOrCreateAAFor<AANoAlias>(CSArgPos);
- // Call site argument attribute "dereferenceable".
- getOrCreateAAFor<AADereferenceable>(CSArgPos);
+ // Call site argument attribute "dereferenceable".
+ getOrCreateAAFor<AADereferenceable>(CSArgPos);
- // Call site argument attribute "align".
- getOrCreateAAFor<AAAlign>(CSArgPos);
+ // Call site argument attribute "align".
+ getOrCreateAAFor<AAAlign>(CSArgPos);
- // Call site argument attribute
- // "readnone/readonly/writeonly/..."
- getOrCreateAAFor<AAMemoryBehavior>(CSArgPos);
+ // Call site argument attribute
+ // "readnone/readonly/writeonly/..."
+ getOrCreateAAFor<AAMemoryBehavior>(CSArgPos);
- // Call site argument attribute "nofree".
- getOrCreateAAFor<AANoFree>(CSArgPos);
- }
+ // Call site argument attribute "nofree".
+ getOrCreateAAFor<AANoFree>(CSArgPos);
}
return true;
};
More information about the llvm-commits
mailing list