diff options
| author | Hideto Ueno <uenoku.tokotoko@gmail.com> | 2019-09-17 06:53:27 +0000 |
|---|---|---|
| committer | Hideto Ueno <uenoku.tokotoko@gmail.com> | 2019-09-17 06:53:27 +0000 |
| commit | 30d86f1858dbeaaeb5d5a2a6ba8631f7f839e094 (patch) | |
| tree | ecc350d3d4ab0f0c90692808e4053cafa45e46f9 /llvm/test/Transforms | |
| parent | b6c05b2a5270b0608e7150aa9407c73056c5c64c (diff) | |
| download | bcm5719-llvm-30d86f1858dbeaaeb5d5a2a6ba8631f7f839e094.tar.gz bcm5719-llvm-30d86f1858dbeaaeb5d5a2a6ba8631f7f839e094.zip | |
[Attributor] Use Alias Analysis in noalias callsite argument deduction
Summary: This patch adds a check of alias analysis in `noalias` callsite argument deduction.
Reviewers: jdoerfert, sstefan1
Reviewed By: jdoerfert
Subscribers: hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D67604
llvm-svn: 372075
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/FunctionAttrs/internal-noalias.ll | 4 | ||||
| -rw-r--r-- | llvm/test/Transforms/FunctionAttrs/noalias_returned.ll | 15 |
2 files changed, 9 insertions, 10 deletions
diff --git a/llvm/test/Transforms/FunctionAttrs/internal-noalias.ll b/llvm/test/Transforms/FunctionAttrs/internal-noalias.ll index 7449c301783..edc3fe07dae 100644 --- a/llvm/test/Transforms/FunctionAttrs/internal-noalias.ll +++ b/llvm/test/Transforms/FunctionAttrs/internal-noalias.ll @@ -1,4 +1,4 @@ -; RUN: opt -S -attributor -attributor-disable=false -attributor-max-iterations-verify -attributor-max-iterations=6 < %s | FileCheck %s +; RUN: opt -S -passes=attributor -aa-pipeline='basic-aa' -attributor-disable=false -attributor-max-iterations-verify -attributor-max-iterations=6 < %s | FileCheck %s define dso_local i32 @visible(i32* noalias %A, i32* noalias %B) #0 { entry: @@ -10,7 +10,7 @@ entry: ; FIXME: Should be something like this. ; define internal i32 @noalias_args(i32* nocapture readonly %A, i32* noalias nocapture readonly %B) -; CHECK: define internal i32 @noalias_args(i32* nocapture %A, i32* nocapture %B) +; CHECK: define internal i32 @noalias_args(i32* nocapture %A, i32* noalias nocapture %B) define internal i32 @noalias_args(i32* %A, i32* %B) #0 { entry: diff --git a/llvm/test/Transforms/FunctionAttrs/noalias_returned.ll b/llvm/test/Transforms/FunctionAttrs/noalias_returned.ll index 2f71d1e5791..410d1d6cbc3 100644 --- a/llvm/test/Transforms/FunctionAttrs/noalias_returned.ll +++ b/llvm/test/Transforms/FunctionAttrs/noalias_returned.ll @@ -1,4 +1,4 @@ -; RUN: opt -S -attributor -attributor-disable=false -attributor-max-iterations-verify -attributor-max-iterations=5 < %s | FileCheck %s +; RUN: opt -S -passes=attributor -aa-pipeline='basic-aa' -attributor-disable=false -attributor-max-iterations-verify -attributor-max-iterations=5 < %s | FileCheck %s ; TEST 1 - negative. @@ -203,7 +203,7 @@ define void @test12_1() { ; CHECK-NEXT: [[B:%.*]] = tail call noalias i8* @malloc(i64 4) ; CHECK-NEXT: tail call void @use_nocapture(i8* noalias nonnull align 4 dereferenceable(1) [[A]]) ; CHECK-NEXT: tail call void @use_nocapture(i8* noalias nonnull align 4 dereferenceable(1) [[A]]) -; CHECK-NEXT: tail call void @use_nocapture(i8* noalias [[B]]) +; CHECK-NEXT: tail call void @use_nocapture(i8* noalias nocapture [[B]]) ; CHECK-NEXT: tail call void @use_nocapture(i8* noalias [[B]]) ; CHECK-NEXT: ret void ; @@ -220,7 +220,7 @@ define void @test12_2(){ ; CHECK-LABEL: @test12_2( ; CHECK-NEXT: [[A:%.*]] = tail call noalias i8* @malloc(i64 4) ; FIXME: This should be @use_nocapture(i8* noalias [[A]]) -; CHECK-NEXT: tail call void @use_nocapture(i8* [[A]]) +; CHECK-NEXT: tail call void @use_nocapture(i8* nocapture [[A]]) ; FIXME: This should be @use_nocapture(i8* noalias [[A]]) ; CHECK-NEXT: tail call void @use_nocapture(i8* [[A]]) ; CHECK-NEXT: tail call void @use(i8* [[A]]) @@ -239,7 +239,7 @@ declare void @two_args(i8* nocapture , i8* nocapture) define void @test12_3(){ ; CHECK-LABEL: @test12_3( %A = tail call noalias i8* @malloc(i64 4) -; CHECK: tail call void @two_args(i8* %A, i8* %A) +; CHECK: tail call void @two_args(i8* nocapture %A, i8* %A) tail call void @two_args(i8* %A, i8* %A) ret void } @@ -252,18 +252,17 @@ define void @test12_4(){ %A_1 = getelementptr i8, i8* %A, i64 1 %B_0 = getelementptr i8, i8* %B, i64 0 -; FIXME: This should be @two_args(i8* noalias %A, i8* noalias %B) -; CHECK: tail call void @two_args(i8* %A, i8* %B) +; CHECK: tail call void @two_args(i8* noalias %A, i8* noalias %B) tail call void @two_args(i8* %A, i8* %B) -; CHECK: tail call void @two_args(i8* %A, i8* %A_0) +; CHECK: tail call void @two_args(i8* %A, i8* nocapture %A_0) tail call void @two_args(i8* %A, i8* %A_0) ; CHECK: tail call void @two_args(i8* %A, i8* %A_1) tail call void @two_args(i8* %A, i8* %A_1) ; FIXME: This should be @two_args(i8* noalias %A_0, i8* noalias %B_0) -; CHECK: tail call void @two_args(i8* %A_0, i8* %B_0) +; CHECK: tail call void @two_args(i8* %A_0, i8* nocapture %B_0) tail call void @two_args(i8* %A_0, i8* %B_0) ret void } |

