Skip to content
Permalink
Browse files

[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

llvm-svn: 370456
  • Loading branch information
uenoku committed Aug 30, 2019
1 parent 3b08a61 commit 6381b143f6cc3607a1a96442aa06dc469ea1fc79
Showing with 14 additions and 7 deletions.
  1. +4 −2 llvm/lib/Transforms/IPO/Attributor.cpp
  2. +10 −5 llvm/test/Transforms/FunctionAttrs/noalias_returned.ll
@@ -1592,8 +1592,10 @@ struct AANoAliasCallSiteArgument final : AANoAliasImpl {

/// 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(...).
@@ -142,8 +142,7 @@ define i8* @test8(i32* %0) nounwind uwtable {
; 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
}

0 comments on commit 6381b14

Please sign in to comment.
You can’t perform that action at this time.