[PATCH] D67272: [Attributor] Add NoCaptureCallSiteArgument in default
Hideto Ueno via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 6 06:06:25 PDT 2019
uenoku created this revision.
uenoku added reviewers: jdoerfert, sstefan1.
Herald added subscribers: llvm-commits, hiraditya.
Herald added a project: LLVM.
This patch adds NoCaptureCallSiteArgument to `identifyDefaultAbstractAttributes`.
https://reviews.llvm.org/D67272
Files:
llvm/lib/Transforms/IPO/Attributor.cpp
llvm/test/Transforms/FunctionAttrs/align.ll
llvm/test/Transforms/FunctionAttrs/noalias_returned.ll
Index: llvm/test/Transforms/FunctionAttrs/noalias_returned.ll
===================================================================
--- llvm/test/Transforms/FunctionAttrs/noalias_returned.ll
+++ llvm/test/Transforms/FunctionAttrs/noalias_returned.ll
@@ -176,7 +176,7 @@
; CHECK-NEXT: tail call void @test10_helper_1(i8* %a)
tail call void @test10_helper_1(i8* %a)
-; CHECK-NEXT: tail call void @test10_helper_2(i8* noalias %a)
+; CHECK-NEXT: tail call void @test10_helper_2(i8* noalias nocapture %a)
tail call void @test10_helper_2(i8* %a)
ret void
}
Index: llvm/test/Transforms/FunctionAttrs/align.ll
===================================================================
--- llvm/test/Transforms/FunctionAttrs/align.ll
+++ llvm/test/Transforms/FunctionAttrs/align.ll
@@ -88,7 +88,7 @@
br i1 %2, label %3, label %5
; <label>:3: ; preds = %1
-; ATTRIBUTOR: %4 = tail call align 8 i8* @f2(i8* nonnull align 8 dereferenceable(1) @a1)
+; ATTRIBUTOR: %4 = tail call align 8 i8* @f2(i8* nonnull align 8 dereferenceable(1) "no-capture-maybe-returned" @a1)
%4 = tail call i8* @f2(i8* nonnull @a1)
; ATTRIBUTOR: %l = load i8, i8* %4, align 8
%l = load i8, i8* %4
@@ -112,7 +112,7 @@
br label %7
; <label>:5: ; preds = %1
-; ATTRIBUTOR: %6 = tail call i8* @f3(i8* nonnull align 16 dereferenceable(1) @a2)
+; ATTRIBUTOR: %6 = tail call i8* @f3(i8* nocapture nonnull align 16 dereferenceable(1) @a2)
%6 = tail call i8* @f3(i8* nonnull @a2)
br label %7
@@ -128,7 +128,7 @@
br i1 %2, label %3, label %5
; <label>:3: ; preds = %1
-; ATTRIBUTOR: %4 = tail call i8* @f1(i8* nonnull align 16 dereferenceable(1) @a2)
+; ATTRIBUTOR: %4 = tail call i8* @f1(i8* nonnull align 16 dereferenceable(1) "no-capture-maybe-returned" @a2)
%4 = tail call i8* @f1(i8* nonnull @a2)
br label %5
@@ -153,11 +153,11 @@
%ptr2 = tail call align 8 i32* @unknown()
tail call void @test8(i32* %ptr1, i32* %ptr1, i32* %ptr0)
-; ATTRIBUTOR: tail call void @test8(i32* align 4 %ptr1, i32* align 4 %ptr1, i32* %ptr0)
+; ATTRIBUTOR: tail call void @test8(i32* nocapture align 4 %ptr1, i32* nocapture align 4 %ptr1, i32* nocapture %ptr0)
tail call void @test8(i32* %ptr2, i32* %ptr1, i32* %ptr1)
-; ATTRIBUTOR: tail call void @test8(i32* align 8 %ptr2, i32* align 4 %ptr1, i32* align 4 %ptr1)
+; ATTRIBUTOR: tail call void @test8(i32* nocapture align 8 %ptr2, i32* nocapture align 4 %ptr1, i32* nocapture align 4 %ptr1)
tail call void @test8(i32* %ptr2, i32* %ptr1, i32* %ptr1)
-; ATTRIBUTOR: tail call void @test8(i32* align 8 %ptr2, i32* align 4 %ptr1, i32* align 4 %ptr1)
+; ATTRIBUTOR: tail call void @test8(i32* nocapture align 8 %ptr2, i32* nocapture align 4 %ptr1, i32* nocapture align 4 %ptr1)
ret void
}
Index: llvm/lib/Transforms/IPO/Attributor.cpp
===================================================================
--- llvm/lib/Transforms/IPO/Attributor.cpp
+++ llvm/lib/Transforms/IPO/Attributor.cpp
@@ -3480,6 +3480,9 @@
// Call site argument attribute "align".
getOrCreateAAFor<AAAlign>(CSArgPos);
+
+ // Call site argument attribute "nocatpure".
+ getOrCreateAAFor<AANoCapture>(CSArgPos);
}
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D67272.219085.patch
Type: text/x-patch
Size: 3300 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190906/486d9b05/attachment.bin>
More information about the llvm-commits
mailing list