The BLX instruction is encoded differently than the BL, because why not? In
[oota-llvm.git] / test / Analysis / BasicAA / args-rets-allocas-loads.ll
index a0bc91a459d8390a554e20f31cd5e3dbc11095b7..c3c4afcc2396ba709f599f3959297cfe1d9b8de0 100644 (file)
@@ -1,4 +1,4 @@
-; RUN: opt -aa-eval -print-all-alias-modref-info -disable-output < %s |& FileCheck  %s
+; RUN: opt -basicaa -aa-eval -print-all-alias-modref-info -disable-output < %s |& FileCheck  %s
 
 declare void @callee(double* %callee_arg)
 declare void @nocap_callee(double* nocapture %nocap_callee_arg)
@@ -168,70 +168,70 @@ define void @caller_a(double* %arg_a0,
 ; CHECK:   NoAlias:    double* %noalias_ret_a1, double* %normal_ret_a0
 ; CHECK:   NoAlias:    double* %noalias_ret_a1, double* %normal_ret_a1
 ; CHECK:   NoAlias:    double* %noalias_ret_a0, double* %noalias_ret_a1
-; CHECK: Both ModRef:  Ptr: double* %arg_a0    <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %arg_a1    <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a0     <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a1     <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double** %indirect_a0      <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double** %indirect_a1      <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %loaded_a0 <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %loaded_a1 <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a0  <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a1  <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a0 <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a1 <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %normal_ret_a0     <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %normal_ret_a1     <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a0     <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a1     <->  %normal_ret_a0 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %arg_a0    <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %arg_a1    <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a0     <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a1     <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double** %indirect_a0      <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double** %indirect_a1      <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %loaded_a0 <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %loaded_a1 <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a0  <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a1  <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a0 <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a1 <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %normal_ret_a0     <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %normal_ret_a1     <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a0     <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a1     <->  %normal_ret_a1 = call double* @normal_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %arg_a0    <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %arg_a1    <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a0     <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a1     <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double** %indirect_a0      <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double** %indirect_a1      <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %loaded_a0 <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %loaded_a1 <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a0  <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a1  <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a0 <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a1 <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %normal_ret_a0     <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %normal_ret_a1     <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %noalias_ret_a0    <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a1     <->  %noalias_ret_a0 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %arg_a0    <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %arg_a1    <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a0     <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a1     <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double** %indirect_a0      <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double** %indirect_a1      <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %loaded_a0 <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %loaded_a1 <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a0  <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a1  <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a0 <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a1 <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %normal_ret_a0     <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %normal_ret_a1     <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a0     <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
-; CHECK: Both ModRef:  Ptr: double* %noalias_ret_a1    <->  %noalias_ret_a1 = call double* @noalias_returner() ; <double*> [#uses=1]
+; CHECK: Both ModRef:  Ptr: double* %arg_a0    <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %arg_a1    <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a0     <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a1     <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double** %indirect_a0      <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double** %indirect_a1      <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %loaded_a0 <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %loaded_a1 <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a0  <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a1  <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a0 <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a1 <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %normal_ret_a0     <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %normal_ret_a1     <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a0     <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a1     <->  %normal_ret_a0 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %arg_a0    <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %arg_a1    <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a0     <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a1     <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double** %indirect_a0      <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double** %indirect_a1      <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %loaded_a0 <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %loaded_a1 <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a0  <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a1  <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a0 <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a1 <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %normal_ret_a0     <->  %normal_ret_a1 = call double* @normal_returner()
+; CHECK: Both ModRef:  Ptr: double* %normal_ret_a1     <->  %normal_ret_a1 = call double* @normal_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a0     <->  %normal_ret_a1 = call double* @normal_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a1     <->  %normal_ret_a1 = call double* @normal_returner() 
+; CHECK: Both ModRef:  Ptr: double* %arg_a0    <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %arg_a1    <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a0     <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a1     <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double** %indirect_a0      <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double** %indirect_a1      <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %loaded_a0 <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %loaded_a1 <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a0  <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a1  <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a0 <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a1 <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %normal_ret_a0     <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %normal_ret_a1     <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %noalias_ret_a0    <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a1     <->  %noalias_ret_a0 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %arg_a0    <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %arg_a1    <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a0     <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a1     <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double** %indirect_a0      <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double** %indirect_a1      <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %loaded_a0 <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %loaded_a1 <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a0  <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %escape_alloca_a1  <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a0 <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noescape_alloca_a1 <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %normal_ret_a0     <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %normal_ret_a1     <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK:   NoModRef:  Ptr: double* %noalias_ret_a0     <->  %noalias_ret_a1 = call double* @noalias_returner() 
+; CHECK: Both ModRef:  Ptr: double* %noalias_ret_a1    <->  %noalias_ret_a1 = call double* @noalias_returner() 
 ; CHECK: Both ModRef:  Ptr: double* %arg_a0    <->  call void @callee(double* %escape_alloca_a0)
 ; CHECK: Both ModRef:  Ptr: double* %arg_a1    <->  call void @callee(double* %escape_alloca_a0)
 ; CHECK:   NoModRef:  Ptr: double* %noalias_arg_a0     <->  call void @callee(double* %escape_alloca_a0)