summaryrefslogtreecommitdiffstats
path: root/llvm/test/Analysis/CFLAliasAnalysis
diff options
context:
space:
mode:
authorGeorge Burgess IV <george.burgess.iv@gmail.com>2016-08-01 18:47:28 +0000
committerGeorge Burgess IV <george.burgess.iv@gmail.com>2016-08-01 18:47:28 +0000
commit5f0e76dca64c24ac9b97536d75b8438b86a7b8db (patch)
treea250c04f4138557a12185f8643460d9e6807b8b4 /llvm/test/Analysis/CFLAliasAnalysis
parentec133b3d205cb4a9a5704080e7ba52224fc2b208 (diff)
downloadbcm5719-llvm-5f0e76dca64c24ac9b97536d75b8438b86a7b8db.tar.gz
bcm5719-llvm-5f0e76dca64c24ac9b97536d75b8438b86a7b8db.zip
[CFLAA] Remove modref queries from CFLAA.
As it turns out, modref queries are broken with CFLAA. Specifically, the data source we were using for determining modref behaviors explicitly ignores operations on non-pointer values. So, it wouldn't note e.g. storing an i32 to an i32* (or loading an i64 from an i64*). It also ignores external function calls, rather than acting conservatively for them. (N.B. These operations, where necessary, *are* tracked by CFLAA; we just use a different mechanism to do so. Said mechanism is relatively imprecise, so it's unlikely that we can provide reasonably good modref answers with it as implemented.) Patch by Jia Chen. Differential Revision: https://reviews.llvm.org/D22978 llvm-svn: 277366
Diffstat (limited to 'llvm/test/Analysis/CFLAliasAnalysis')
-rw-r--r--llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-arg.ll7
-rw-r--r--llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-deref-arg-multilevel.ll7
-rw-r--r--llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-deref-arg.ll11
-rw-r--r--llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-ref-arg-multilevel.ll5
-rw-r--r--llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-ref-arg.ll3
-rw-r--r--llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-store-arg.ll9
-rw-r--r--llvm/test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-arg.ll3
7 files changed, 26 insertions, 19 deletions
diff --git a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-arg.ll b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-arg.ll
index c42ec2b9dc4..002ff173e7c 100644
--- a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-arg.ll
+++ b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-arg.ll
@@ -12,9 +12,10 @@ define i32* @return_arg_callee(i32* %arg1, i32* %arg2) {
; CHECK: MayAlias: i32* %a, i32* %c
; CHECK: NoAlias: i32* %b, i32* %c
-; CHECK: NoModRef: Ptr: i32* %a <-> %c = call i32* @return_arg_callee(i32* %a, i32* %b)
-; CHECK: NoModRef: Ptr: i32* %b <-> %c = call i32* @return_arg_callee(i32* %a, i32* %b)
-; CHECK: NoModRef: Ptr: i32* %c <-> %c = call i32* @return_arg_callee(i32* %a, i32* %b)
+; Temporarily disable modref checks
+; NoModRef: Ptr: i32* %a <-> %c = call i32* @return_arg_callee(i32* %a, i32* %b)
+; NoModRef: Ptr: i32* %b <-> %c = call i32* @return_arg_callee(i32* %a, i32* %b)
+; NoModRef: Ptr: i32* %c <-> %c = call i32* @return_arg_callee(i32* %a, i32* %b)
define void @test_return_arg() {
%a = alloca i32, align 4
%b = alloca i32, align 4
diff --git a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-deref-arg-multilevel.ll b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-deref-arg-multilevel.ll
index 97ce8bf55d6..764d1444910 100644
--- a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-deref-arg-multilevel.ll
+++ b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-deref-arg-multilevel.ll
@@ -29,9 +29,10 @@ define i32* @return_deref_arg_multilevel_callee(i32*** %arg1) {
; CHECK: NoAlias: i32* %lp, i32** %lpp
; CHECK: MayAlias: i32* %lp, i32* %lpp_deref
-; CHECK: Just Ref: Ptr: i32** %p <-> %c = call i32* @return_deref_arg_multilevel_callee(i32*** %pp)
-; CHECK: Just Ref: Ptr: i32*** %pp <-> %c = call i32* @return_deref_arg_multilevel_callee(i32*** %pp)
-; CHECK: Just Ref: Ptr: i32** %lpp <-> %c = call i32* @return_deref_arg_multilevel_callee(i32*** %pp)
+; Temporarily disable modref checks
+; Just Ref: Ptr: i32** %p <-> %c = call i32* @return_deref_arg_multilevel_callee(i32*** %pp)
+; Just Ref: Ptr: i32*** %pp <-> %c = call i32* @return_deref_arg_multilevel_callee(i32*** %pp)
+; Just Ref: Ptr: i32** %lpp <-> %c = call i32* @return_deref_arg_multilevel_callee(i32*** %pp)
define void @test_return_deref_arg_multilevel() {
%a = alloca i32, align 4
diff --git a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-deref-arg.ll b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-deref-arg.ll
index e4ddc56c13f..76e7c77bf87 100644
--- a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-deref-arg.ll
+++ b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-deref-arg.ll
@@ -17,11 +17,12 @@ define i32* @return_deref_arg_callee(i32** %arg1) {
; CHECK: NoAlias: i32* %lp, i32** %p
; CHECK: MayAlias: i32* %c, i32* %lp
-; CHECK: NoModRef: Ptr: i32* %a <-> %c = call i32* @return_deref_arg_callee(i32** %p)
-; CHECK: NoModRef: Ptr: i32* %b <-> %c = call i32* @return_deref_arg_callee(i32** %p)
-; CHECK: Just Ref: Ptr: i32** %p <-> %c = call i32* @return_deref_arg_callee(i32** %p)
-; CHECK: NoModRef: Ptr: i32* %c <-> %c = call i32* @return_deref_arg_callee(i32** %p)
-; CHECK: NoModRef: Ptr: i32* %lp <-> %c = call i32* @return_deref_arg_callee(i32** %p)
+; Temporarily disable modref checks
+; NoModRef: Ptr: i32* %a <-> %c = call i32* @return_deref_arg_callee(i32** %p)
+; NoModRef: Ptr: i32* %b <-> %c = call i32* @return_deref_arg_callee(i32** %p)
+; Just Ref: Ptr: i32** %p <-> %c = call i32* @return_deref_arg_callee(i32** %p)
+; NoModRef: Ptr: i32* %c <-> %c = call i32* @return_deref_arg_callee(i32** %p)
+; NoModRef: Ptr: i32* %lp <-> %c = call i32* @return_deref_arg_callee(i32** %p)
define void @test_return_deref_arg() {
%a = alloca i32, align 4
%b = alloca i32, align 4
diff --git a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-ref-arg-multilevel.ll b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-ref-arg-multilevel.ll
index b64fdf30bc7..4e3222dff52 100644
--- a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-ref-arg-multilevel.ll
+++ b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-ref-arg-multilevel.ll
@@ -31,8 +31,9 @@ define i32*** @return_ref_arg_multilevel_callee(i32* %arg1) {
; CHECK: NoAlias: i32* %lp, i32** %lpp
; CHECK: MayAlias: i32* %lp, i32* %lpp_deref
-; CHECK: Just Mod: Ptr: i32*** %b <-> %b = call i32*** @return_ref_arg_multilevel_callee(i32* %a)
-; CHECK: Just Mod: Ptr: i32** %lb <-> %b = call i32*** @return_ref_arg_multilevel_callee(i32* %a)
+; Temporarily disable modref checks
+; Just Mod: Ptr: i32*** %b <-> %b = call i32*** @return_ref_arg_multilevel_callee(i32* %a)
+; Just Mod: Ptr: i32** %lb <-> %b = call i32*** @return_ref_arg_multilevel_callee(i32* %a)
define void @test_return_ref_arg_multilevel() {
%a = alloca i32, align 4
%p = alloca i32*, align 8
diff --git a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-ref-arg.ll b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-ref-arg.ll
index c1938f063b2..62346858516 100644
--- a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-ref-arg.ll
+++ b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-ret-ref-arg.ll
@@ -21,7 +21,8 @@ define i32** @return_ref_arg_callee(i32* %arg1) {
; CHECK: NoAlias: i32* %lp, i32** %b
; CHECK: MayAlias: i32* %lb, i32* %lp
-; CHECK: Just Mod: Ptr: i32** %b <-> %b = call i32** @return_ref_arg_callee(i32* %a)
+; Temporarily disable modref checks
+; Just Mod: Ptr: i32** %b <-> %b = call i32** @return_ref_arg_callee(i32* %a)
define void @test_return_ref_arg() {
%a = alloca i32, align 4
%p = alloca i32*, align 8
diff --git a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-store-arg.ll b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-store-arg.ll
index 0953d764c51..89c02198f73 100644
--- a/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-store-arg.ll
+++ b/llvm/test/Analysis/CFLAliasAnalysis/Andersen/interproc-store-arg.ll
@@ -18,10 +18,11 @@ define void @store_arg_callee(i32** %arg1, i32* %arg2) {
; CHECK: MayAlias: i32* %b, i32* %lq
; CHECK: MayAlias: i32* %lp, i32* %lq
-; CHECK: NoModRef: Ptr: i32* %a <-> call void @store_arg_callee(i32** %p, i32* %b)
-; CHECK: Just Ref: Ptr: i32* %b <-> call void @store_arg_callee(i32** %p, i32* %b)
-; CHECK: Just Mod: Ptr: i32** %p <-> call void @store_arg_callee(i32** %p, i32* %b)
-; CHECK: NoModRef: Ptr: i32** %q <-> call void @store_arg_callee(i32** %p, i32* %b)
+; Temporarily disable modref checks
+; NoModRef: Ptr: i32* %a <-> call void @store_arg_callee(i32** %p, i32* %b)
+; Just Ref: Ptr: i32* %b <-> call void @store_arg_callee(i32** %p, i32* %b)
+; Just Mod: Ptr: i32** %p <-> call void @store_arg_callee(i32** %p, i32* %b)
+; NoModRef: Ptr: i32** %q <-> call void @store_arg_callee(i32** %p, i32* %b)
define void @test_store_arg() {
%a = alloca i32, align 4
%b = alloca i32, align 4
diff --git a/llvm/test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-arg.ll b/llvm/test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-arg.ll
index e071e7e46c2..e6e2065e731 100644
--- a/llvm/test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-arg.ll
+++ b/llvm/test/Analysis/CFLAliasAnalysis/Steensgaard/interproc-ret-arg.ll
@@ -12,7 +12,8 @@ define i32* @return_arg_callee(i32* %arg1, i32* %arg2) {
; CHECK: MayAlias: i32* %a, i32* %c
; CHECK: NoAlias: i32* %b, i32* %c
-; CHECK: NoModRef: Ptr: i32* %b <-> %c = call i32* @return_arg_callee(i32* %a, i32* %b)
+; Temporarily disable modref checks
+; NoModRef: Ptr: i32* %b <-> %c = call i32* @return_arg_callee(i32* %a, i32* %b)
define void @test_return_arg() {
%a = alloca i32, align 4
%b = alloca i32, align 4
OpenPOWER on IntegriCloud