diff options
author | Dávid Bolvanský <david.bolvansky@gmail.com> | 2023-04-06 16:54:26 +0200 |
---|---|---|
committer | Dávid Bolvanský <david.bolvansky@gmail.com> | 2023-04-06 16:54:26 +0200 |
commit | e1f94336e94e505a2562d508d48dc692fa57df75 (patch) | |
tree | b085512d3552c04c7e686a499c93b17640cdb0d1 | |
parent | d5fe5604a61153fcb421bca5af5975b907ec05cf (diff) | |
download | llvm-e1f94336e94e505a2562d508d48dc692fa57df75.zip llvm-e1f94336e94e505a2562d508d48dc692fa57df75.tar.gz llvm-e1f94336e94e505a2562d508d48dc692fa57df75.tar.bz2 |
Revert "[InlineCost] isKnownNonNullInCallee - handle also dereferenceable attribute"
This reverts commit 3b5ff3a67c1f0450a100dca34d899ecd3744cb36.
-rw-r--r-- | llvm/lib/Analysis/InlineCost.cpp | 2 | ||||
-rw-r--r-- | llvm/test/Transforms/Inline/nonnull.ll | 22 |
2 files changed, 3 insertions, 21 deletions
diff --git a/llvm/lib/Analysis/InlineCost.cpp b/llvm/lib/Analysis/InlineCost.cpp index 1eb4f2e..6877e44 100644 --- a/llvm/lib/Analysis/InlineCost.cpp +++ b/llvm/lib/Analysis/InlineCost.cpp @@ -1732,7 +1732,7 @@ bool CallAnalyzer::isKnownNonNullInCallee(Value *V) { // parameter attribute, but that's a less interesting case because hopefully // the callee would already have been simplified based on that. if (Argument *A = dyn_cast<Argument>(V)) - if (paramHasAttr(A, Attribute::NonNull) || paramHasAttr(A, Attribute::Dereferenceable)) + if (paramHasAttr(A, Attribute::NonNull)) return true; // Is this an alloca in the caller? This is distinct from the attribute case diff --git a/llvm/test/Transforms/Inline/nonnull.ll b/llvm/test/Transforms/Inline/nonnull.ll index 658ae47..5f8af7f 100644 --- a/llvm/test/Transforms/Inline/nonnull.ll +++ b/llvm/test/Transforms/Inline/nonnull.ll @@ -99,11 +99,10 @@ define void @caller3(ptr %arg) { ret void } -; Positive test - arg is known non null define void @caller4(ptr dereferenceable(8) %arg) { ; CHECK-LABEL: define void @caller4 ; CHECK-SAME: (ptr dereferenceable(8) [[ARG:%.*]]) { -; CHECK-NEXT: call void @bar() +; CHECK-NEXT: call void @callee(ptr dereferenceable(8) [[ARG]]) ; CHECK-NEXT: ret void ; call void @callee(ptr dereferenceable(8) %arg) @@ -123,24 +122,7 @@ define void @caller5(ptr dereferenceable(8) %arg) { define void @caller6(ptr %arg) { ; CHECK-LABEL: define void @caller6 ; CHECK-SAME: (ptr [[ARG:%.*]]) { -; CHECK-NEXT: [[CMP_I:%.*]] = icmp eq ptr [[ARG]], null -; CHECK-NEXT: br i1 [[CMP_I]], label [[EXPENSIVE_I:%.*]], label [[DONE_I:%.*]] -; CHECK: expensive.i: -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: call void @foo() -; CHECK-NEXT: br label [[CALLEE_EXIT:%.*]] -; CHECK: done.i: -; CHECK-NEXT: call void @bar() -; CHECK-NEXT: br label [[CALLEE_EXIT]] -; CHECK: callee.exit: +; CHECK-NEXT: call void @callee(ptr dereferenceable(8) [[ARG]]) ; CHECK-NEXT: ret void ; call void @callee(ptr dereferenceable(8) %arg) |