[llvm] r370456 - [Attributor] Implement AANoAliasCallSiteArgument initialization
Hideto Ueno via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 30 03:00:33 PDT 2019
Author: uenoku
Date: Fri Aug 30 03:00:32 2019
New Revision: 370456
URL: http://llvm.org/viewvc/llvm-project?rev=370456&view=rev
Log:
[Attributor] Implement AANoAliasCallSiteArgument initialization
Summary: This patch adds an appropriate `initialize` method for `AANoAliasCallSiteArgument`.
Reviewers: jdoerfert, sstefan1
Reviewed By: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D66927
Modified:
llvm/trunk/lib/Transforms/IPO/Attributor.cpp
llvm/trunk/test/Transforms/FunctionAttrs/noalias_returned.ll
Modified: llvm/trunk/lib/Transforms/IPO/Attributor.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/IPO/Attributor.cpp?rev=370456&r1=370455&r2=370456&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/IPO/Attributor.cpp (original)
+++ llvm/trunk/lib/Transforms/IPO/Attributor.cpp Fri Aug 30 03:00:32 2019
@@ -1592,8 +1592,10 @@ struct AANoAliasCallSiteArgument final :
/// 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(...).
Modified: llvm/trunk/test/Transforms/FunctionAttrs/noalias_returned.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/FunctionAttrs/noalias_returned.ll?rev=370456&r1=370455&r2=370456&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/FunctionAttrs/noalias_returned.ll (original)
+++ llvm/trunk/test/Transforms/FunctionAttrs/noalias_returned.ll Fri Aug 30 03:00:32 2019
@@ -142,8 +142,7 @@ define i8* @test8(i32* %0) nounwind uwta
; 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 @@ define void @test9_helper(i8* %a, i8* %b
; 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
}
More information about the llvm-commits
mailing list