Corrects a problem where we reply exclusively of GEPs to drive

analysis.  Better is to look for cases with useful GEPs and use them
when possible.  When a pair of useful GEPs is not available, use the
raw SCEVs directly. This approach supports better analysis of pointer
dereferencing.

In parallel, all the test cases are updated appropriately.
Cases where we have a store to *B++ can now be analyzed!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168474 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Preston Briggs
2012-11-21 23:50:04 +00:00
parent 198ad916d7
commit 72a2c0622a
16 changed files with 295 additions and 211 deletions

View File

@@ -19,7 +19,7 @@ entry:
; CHECK: da analyze - confused!
; CHECK: da analyze - input [* *|<]!
; CHECK: da analyze - confused!
; CHECK: da analyze - confused!
; CHECK: da analyze - output [= =|<]!
for.cond1.preheader: ; preds = %entry, %for.inc8
%B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc8 ]
@@ -71,7 +71,7 @@ entry:
; CHECK: da analyze - confused!
; CHECK: da analyze - input [* *|<]!
; CHECK: da analyze - confused!
; CHECK: da analyze - confused!
; CHECK: da analyze - output [= =|<]!
for.cond1.preheader: ; preds = %entry, %for.inc9
%B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc9 ]
@@ -124,7 +124,7 @@ entry:
; CHECK: da analyze - confused!
; CHECK: da analyze - input [* *|<]!
; CHECK: da analyze - confused!
; CHECK: da analyze - confused!
; CHECK: da analyze - output [= =|<]!
for.cond1.preheader: ; preds = %entry, %for.inc9
%B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc9 ]
@@ -177,7 +177,7 @@ entry:
; CHECK: da analyze - confused!
; CHECK: da analyze - input [* *|<]!
; CHECK: da analyze - confused!
; CHECK: da analyze - confused!
; CHECK: da analyze - output [= =|<]!
for.cond1.preheader: ; preds = %entry, %for.inc7
%B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc7 ]
@@ -228,7 +228,7 @@ entry:
; CHECK: da analyze - confused!
; CHECK: da analyze - input [* *|<]!
; CHECK: da analyze - confused!
; CHECK: da analyze - confused!
; CHECK: da analyze - output [= =|<]!
for.cond1.preheader: ; preds = %entry, %for.inc17
%B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc17 ]
@@ -289,7 +289,7 @@ entry:
; CHECK: da analyze - confused!
; CHECK: da analyze - input [* *|<]!
; CHECK: da analyze - confused!
; CHECK: da analyze - confused!
; CHECK: da analyze - output [= =|<]!
for.cond1.preheader: ; preds = %entry, %for.inc17
%B.addr.04 = phi i32* [ %B, %entry ], [ %scevgep, %for.inc17 ]
@@ -351,7 +351,7 @@ entry:
; CHECK: da analyze - confused!
; CHECK: da analyze - input [* *|<]!
; CHECK: da analyze - confused!
; CHECK: da analyze - confused!
; CHECK: da analyze - output [* *|<]!
for.cond1.preheader.preheader: ; preds = %entry
br label %for.cond1.preheader
@@ -422,7 +422,7 @@ entry:
; CHECK: da analyze - confused!
; CHECK: da analyze - input [* *|<]!
; CHECK: da analyze - confused!
; CHECK: da analyze - confused!
; CHECK: da analyze - output [* *|<]!
for.cond1.preheader.preheader: ; preds = %entry
br label %for.cond1.preheader
@@ -505,7 +505,7 @@ entry:
; CHECK: da analyze - confused!
; CHECK: da analyze - input [* *|<]!
; CHECK: da analyze - confused!
; CHECK: da analyze - confused!
; CHECK: da analyze - output [* *|<]!
for.cond1.preheader.preheader: ; preds = %entry
br label %for.cond1.preheader
@@ -583,7 +583,7 @@ entry:
; CHECK: da analyze - confused!
; CHECK: da analyze - input [* *|<]!
; CHECK: da analyze - confused!
; CHECK: da analyze - confused!
; CHECK: da analyze - output [* *|<]!
for.cond1.preheader.preheader: ; preds = %entry
br label %for.cond1.preheader