diff options
author | Dan Gohman <gohman@apple.com> | 2010-11-08 17:12:04 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-11-08 17:12:04 +0000 |
commit | 2cd1fd4a828812e3b45b5144ae8cb7ce950792cd (patch) | |
tree | d4ceb6ff841f5c124f4d17441ca610973e1e6818 /llvm/test | |
parent | 601c94b309a13460aae314fdce8a8b24bb10712e (diff) | |
download | bcm5719-llvm-2cd1fd4a828812e3b45b5144ae8cb7ce950792cd.tar.gz bcm5719-llvm-2cd1fd4a828812e3b45b5144ae8cb7ce950792cd.zip |
Make FunctionAttrs TBAA-aware.
llvm-svn: 118417
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/llvm/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll b/llvm/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll new file mode 100644 index 00000000000..62fe8aa1644 --- /dev/null +++ b/llvm/test/Analysis/TypeBasedAliasAnalysis/functionattrs.ll @@ -0,0 +1,37 @@ +; RUN: opt < %s -enable-tbaa -tbaa -basicaa -functionattrs -S | FileCheck %s + +; FunctionAttrs should make use of TBAA. + +; CHECK: define void @test0_yes(i32* nocapture %p) nounwind readnone { +define void @test0_yes(i32* %p) nounwind { + store i32 0, i32* %p, !tbaa !1 + ret void +} + +; CHECK: define void @test0_no(i32* nocapture %p) nounwind { +define void @test0_no(i32* %p) nounwind { + store i32 0, i32* %p, !tbaa !2 + ret void +} + +; CHECK: define void @test1_yes(i32* %p) nounwind readonly { +define void @test1_yes(i32* %p) nounwind { + call void @callee(i32* %p), !tbaa !1 + ret void +} + +; CHECK: define void @test1_no(i32* %p) nounwind { +define void @test1_no(i32* %p) nounwind { + call void @callee(i32* %p), !tbaa !2 + ret void +} + +declare void @callee(i32* %p) nounwind + +; Root note. +!0 = metadata !{ } + +; Invariant memory. +!1 = metadata !{ metadata !"foo", metadata !0, i1 1 } +; Not invariant memory. +!2 = metadata !{ metadata !"foo", metadata !0, i1 0 } |