[PATCH] D156841: [CaptureTracking] Allow non-void `noalias` return funcs to be non-capturing
Noah Goldstein via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Aug 2 09:00:56 PDT 2023
goldstein.w.n updated this revision to Diff 546498.
goldstein.w.n added a comment.
Rebase
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D156841/new/
https://reviews.llvm.org/D156841
Files:
llvm/lib/Analysis/CaptureTracking.cpp
llvm/test/Transforms/FunctionAttrs/nocapture.ll
Index: llvm/test/Transforms/FunctionAttrs/nocapture.ll
===================================================================
--- llvm/test/Transforms/FunctionAttrs/nocapture.ll
+++ llvm/test/Transforms/FunctionAttrs/nocapture.ll
@@ -568,7 +568,7 @@
define ptr @noalias_ret(ptr %f, ptr %p) {
; CHECK-LABEL: define ptr @noalias_ret
-; CHECK-SAME: (ptr nocapture readonly [[F:%.*]], ptr readonly [[P:%.*]]) #[[ATTR5]] {
+; CHECK-SAME: (ptr nocapture readonly [[F:%.*]], ptr nocapture readonly [[P:%.*]]) #[[ATTR5]] {
; CHECK-NEXT: [[R:%.*]] = call noalias ptr [[F]](ptr [[P]]) #[[ATTR8]]
; CHECK-NEXT: ret ptr [[R]]
;
Index: llvm/lib/Analysis/CaptureTracking.cpp
===================================================================
--- llvm/lib/Analysis/CaptureTracking.cpp
+++ llvm/lib/Analysis/CaptureTracking.cpp
@@ -314,8 +314,8 @@
// its return value and doesn't unwind (a readonly function can leak bits
// by throwing an exception or not depending on the input value).
if (Call->onlyReadsMemory() && Call->doesNotThrow() &&
- Call->getType()->isVoidTy())
- return UseCaptureKind::NO_CAPTURE;
+ (Call->getType()->isVoidTy() || Call->returnDoesNotAlias()))
+ return UseCaptureKind::NO_CAPTURE;
// The pointer is not captured if returned pointer is not captured.
// NOTE: CaptureTracking users should not assume that only functions
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D156841.546498.patch
Type: text/x-patch
Size: 1396 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230802/2d549a87/attachment-0001.bin>
More information about the llvm-commits
mailing list