Teach BasicAA about noalias parameter attributes, but do it correctly this time.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40711 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Christopher Lamb
2007-08-02 01:18:14 +00:00
parent 8409747efa
commit 406bfa3e21
3 changed files with 58 additions and 1 deletions
@@ -0,0 +1,10 @@
; RUN: llvm-as %s -o - | opt -basicaa -aa-eval -print-all-alias-modref-info -disable-output &| grep 'MayAlias: i32* %y, i32* %x'
declare i32* @unclear(i32* %a)
define void @foo(i32* noalias %x) {
%y = call i32* @unclear(i32* %x)
store i32 0, i32* %x
store i32 0, i32* %y
ret void
}
@@ -0,0 +1,17 @@
; RUN: llvm-as %s -o - | opt -basicaa -aa-eval -print-all-alias-modref-info -disable-output &| grep '9 no alias'
; RUN: llvm-as %s -o - | opt -basicaa -aa-eval -print-all-alias-modref-info -disable-output &| grep '6 may alias'
; RUN: llvm-as %s -o - | opt -basicaa -aa-eval -print-all-alias-modref-info -disable-output &| grep 'MayAlias: i32* %pj, i32* %pi'
define void @foo(i32* noalias %p, i32* noalias %q, i32 %i, i32 %j) {
%pi = getelementptr i32* %p, i32 %i
%qi = getelementptr i32* %q, i32 %i
%pj = getelementptr i32* %p, i32 %j
%qj = getelementptr i32* %q, i32 %j
store i32 0, i32* %p
store i32 0, i32* %pi
store i32 0, i32* %pj
store i32 0, i32* %q
store i32 0, i32* %qi
store i32 0, i32* %qj
ret void
}