[PATCH] D66927: [Attributor] Implement AANoAliasCallSiteArgument initialization
Hideto Ueno via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Aug 29 00:11:45 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 an appropriate `initialize` method for `AANoAliasCallSiteArgument`.
https://reviews.llvm.org/D66927
Files:
llvm/lib/Transforms/IPO/Attributor.cpp
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
@@ -142,8 +142,7 @@
; TEST 9
; Simple Argument Test
define internal void @test9(i8* %a, i8* %b) {
-; FIXME: missing noalias
-; CHECK: define internal void @test9(i8* %a, i8* %b)
+; CHECK: define internal void @test9(i8* noalias %a, i8* %b)
ret void
}
define void @test9_helper(i8* %a, i8* %b) {
@@ -156,12 +155,18 @@
; TEST 10
; Simple CallSite Test
-declare void @test10_helper(i8* %a)
+declare void @test10_helper_1(i8* %a)
+define void @test10_helper_2(i8* noalias %a) {
+ ret void
+}
define void @test10(i8* noalias %a) {
; CHECK: define void @test10(i8* noalias %a)
; FIXME: missing noalias
-; CHECK-NEXT: tail call void @test10_helper(i8* %a)
- tail call void @test10_helper(i8* %a)
+; 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)
+ tail call void @test10_helper_2(i8* %a)
ret void
}
Index: llvm/lib/Transforms/IPO/Attributor.cpp
===================================================================
--- llvm/lib/Transforms/IPO/Attributor.cpp
+++ llvm/lib/Transforms/IPO/Attributor.cpp
@@ -1592,8 +1592,10 @@
/// See AbstractAttribute::initialize(...).
void initialize(Attributor &A) override {
- // TODO: It isn't sound to initialize as the same with `AANoAliasImpl`
- // because `noalias` may not be valid in the current position.
+ // See callsite argument attribute and callee argument attribute.
+ ImmutableCallSite ICS(&getAnchorValue());
+ if (ICS.paramHasAttr(getArgNo(), Attribute::NoAlias))
+ indicateOptimisticFixpoint();
}
/// See AbstractAttribute::updateImpl(...).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D66927.217782.patch
Type: text/x-patch
Size: 1912 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190829/5512a98f/attachment.bin>
More information about the llvm-commits
mailing list