mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-24 20:29:53 +00:00
Move the loads after the calls so that the fix for
PR10292 doesn't show that the loads don't alias the allocas. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@134852 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4fe509431b
commit
aecfdd3068
@ -12,9 +12,6 @@ define void @caller_a(double* %arg_a0,
|
||||
double* noalias %noalias_arg_a1,
|
||||
double** %indirect_a0,
|
||||
double** %indirect_a1) {
|
||||
%loaded_a0 = load double** %indirect_a0
|
||||
%loaded_a1 = load double** %indirect_a1
|
||||
|
||||
%escape_alloca_a0 = alloca double
|
||||
%escape_alloca_a1 = alloca double
|
||||
%noescape_alloca_a0 = alloca double
|
||||
@ -25,6 +22,9 @@ define void @caller_a(double* %arg_a0,
|
||||
%noalias_ret_a0 = call double* @noalias_returner()
|
||||
%noalias_ret_a1 = call double* @noalias_returner()
|
||||
|
||||
%loaded_a0 = load double** %indirect_a0
|
||||
%loaded_a1 = load double** %indirect_a1
|
||||
|
||||
call void @callee(double* %escape_alloca_a0)
|
||||
call void @callee(double* %escape_alloca_a1)
|
||||
call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
@ -63,35 +63,18 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_arg_a0, double** %indirect_a1
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double** %indirect_a1
|
||||
; CHECK-NEXT: MayAlias: double** %indirect_a0, double** %indirect_a1
|
||||
; CHECK-NEXT: MayAlias: double* %arg_a0, double* %loaded_a0
|
||||
; CHECK-NEXT: MayAlias: double* %arg_a1, double* %loaded_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_arg_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_arg_a1
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a0, double** %indirect_a0
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a0, double** %indirect_a1
|
||||
; CHECK-NEXT: MayAlias: double* %arg_a0, double* %loaded_a1
|
||||
; CHECK-NEXT: MayAlias: double* %arg_a1, double* %loaded_a1
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_arg_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_arg_a1
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a1, double** %indirect_a0
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a1, double** %indirect_a1
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %loaded_a1
|
||||
; CHECK-NEXT: NoAlias: double* %arg_a0, double* %escape_alloca_a0
|
||||
; CHECK-NEXT: NoAlias: double* %arg_a1, double* %escape_alloca_a0
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_arg_a0
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_arg_a1
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double** %indirect_a0
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double** %indirect_a1
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %loaded_a0
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %loaded_a1
|
||||
; CHECK-NEXT: NoAlias: double* %arg_a0, double* %escape_alloca_a1
|
||||
; CHECK-NEXT: NoAlias: double* %arg_a1, double* %escape_alloca_a1
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_arg_a0
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_arg_a1
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double** %indirect_a0
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double** %indirect_a1
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %loaded_a0
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %loaded_a1
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %escape_alloca_a1
|
||||
; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noescape_alloca_a0
|
||||
; CHECK-NEXT: NoAlias: double* %arg_a1, double* %noescape_alloca_a0
|
||||
@ -99,8 +82,6 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noescape_alloca_a0
|
||||
; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double** %indirect_a0
|
||||
; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double** %indirect_a1
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noescape_alloca_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noescape_alloca_a0
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noescape_alloca_a0
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noescape_alloca_a0
|
||||
; CHECK-NEXT: NoAlias: double* %arg_a0, double* %noescape_alloca_a1
|
||||
@ -109,8 +90,6 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noescape_alloca_a1
|
||||
; CHECK-NEXT: NoAlias: double* %noescape_alloca_a1, double** %indirect_a0
|
||||
; CHECK-NEXT: NoAlias: double* %noescape_alloca_a1, double** %indirect_a1
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noescape_alloca_a1
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noescape_alloca_a1
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noescape_alloca_a1
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noescape_alloca_a1
|
||||
; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double* %noescape_alloca_a1
|
||||
@ -120,8 +99,6 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %normal_ret_a0
|
||||
; CHECK-NEXT: MayAlias: double* %normal_ret_a0, double** %indirect_a0
|
||||
; CHECK-NEXT: MayAlias: double* %normal_ret_a0, double** %indirect_a1
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %normal_ret_a0
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a1, double* %normal_ret_a0
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %normal_ret_a0
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %normal_ret_a0
|
||||
; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double* %normal_ret_a0
|
||||
@ -132,8 +109,6 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %normal_ret_a1
|
||||
; CHECK-NEXT: MayAlias: double* %normal_ret_a1, double** %indirect_a0
|
||||
; CHECK-NEXT: MayAlias: double* %normal_ret_a1, double** %indirect_a1
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %normal_ret_a1
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a1, double* %normal_ret_a1
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %normal_ret_a1
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %normal_ret_a1
|
||||
; CHECK-NEXT: NoAlias: double* %noescape_alloca_a0, double* %normal_ret_a1
|
||||
@ -145,8 +120,6 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noalias_ret_a0
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double** %indirect_a0
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double** %indirect_a1
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_ret_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_ret_a0
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_ret_a0
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_ret_a0
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %noescape_alloca_a0
|
||||
@ -159,8 +132,6 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_arg_a1, double* %noalias_ret_a1
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double** %indirect_a0
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double** %indirect_a1
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_ret_a1
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_ret_a1
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a0, double* %noalias_ret_a1
|
||||
; CHECK-NEXT: NoAlias: double* %escape_alloca_a1, double* %noalias_ret_a1
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double* %noescape_alloca_a0
|
||||
@ -168,14 +139,41 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double* %normal_ret_a0
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_ret_a1, double* %normal_ret_a1
|
||||
; CHECK-NEXT: NoAlias: double* %noalias_ret_a0, double* %noalias_ret_a1
|
||||
; CHECK-NEXT: MayAlias: double* %arg_a0, double* %loaded_a0
|
||||
; CHECK-NEXT: MayAlias: double* %arg_a1, double* %loaded_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_arg_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_arg_a1
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a0, double** %indirect_a0
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a0, double** %indirect_a1
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %loaded_a0
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %loaded_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noescape_alloca_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noescape_alloca_a1
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %normal_ret_a0
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %normal_ret_a1
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_ret_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a0, double* %noalias_ret_a1
|
||||
; CHECK-NEXT: MayAlias: double* %arg_a0, double* %loaded_a1
|
||||
; CHECK-NEXT: MayAlias: double* %arg_a1, double* %loaded_a1
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_arg_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_arg_a1
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a1, double** %indirect_a0
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a1, double** %indirect_a1
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a0, double* %loaded_a1
|
||||
; CHECK-NEXT: MayAlias: double* %escape_alloca_a1, double* %loaded_a1
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noescape_alloca_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noescape_alloca_a1
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a1, double* %normal_ret_a0
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a1, double* %normal_ret_a1
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_ret_a0
|
||||
; CHECK-NEXT: NoAlias: double* %loaded_a1, double* %noalias_ret_a1
|
||||
; CHECK-NEXT: MayAlias: double* %loaded_a0, double* %loaded_a1
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
@ -184,14 +182,14 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %normal_ret_a0 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
@ -200,14 +198,14 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %normal_ret_a1 = call double* @normal_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
@ -216,14 +214,14 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %noalias_ret_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %noalias_ret_a0 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
@ -232,14 +230,14 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %noalias_ret_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> %noalias_ret_a1 = call double* @noalias_returner()
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> call void @callee(double* %escape_alloca_a0)
|
||||
@ -248,14 +246,14 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @callee(double* %escape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> call void @callee(double* %escape_alloca_a1)
|
||||
@ -264,14 +262,14 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @callee(double* %escape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %noescape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
@ -280,14 +278,14 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @nocap_callee(double* %noescape_alloca_a0)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_arg_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double** %indirect_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %escape_alloca_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noescape_alloca_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
@ -296,6 +294,8 @@ define void @caller_a(double* %arg_a0,
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %normal_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: NoModRef: Ptr: double* %noalias_ret_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a0 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK-NEXT: Both ModRef: Ptr: double* %loaded_a1 <-> call void @nocap_callee(double* %noescape_alloca_a1)
|
||||
; CHECK: ===== Alias Analysis Evaluator Report =====
|
||||
; CHECK-NEXT: 120 Total Alias Queries Performed
|
||||
; CHECK-NEXT: 84 no alias responses (70.0%)
|
||||
|
Loading…
Reference in New Issue
Block a user