diff options
author | Dan Gohman <gohman@apple.com> | 2010-10-18 21:00:09 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2010-10-18 21:00:09 +0000 |
commit | fe8abf88a0be3d9e49be5a73135c1d2df714b3d8 (patch) | |
tree | ebd23c9ea8e1cdca4b568ace7ef2a93d082b7961 /llvm/test/Analysis | |
parent | fba9f749325275c4633c829dbc78c07020b37ed5 (diff) | |
download | bcm5719-llvm-fe8abf88a0be3d9e49be5a73135c1d2df714b3d8.tar.gz bcm5719-llvm-fe8abf88a0be3d9e49be5a73135c1d2df714b3d8.zip |
Add a basic testcase for TBAA-aware LICM.
llvm-svn: 116745
Diffstat (limited to 'llvm/test/Analysis')
-rw-r--r-- | llvm/test/Analysis/TypeBasedAliasAnalysis/licm.ll | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/llvm/test/Analysis/TypeBasedAliasAnalysis/licm.ll b/llvm/test/Analysis/TypeBasedAliasAnalysis/licm.ll new file mode 100644 index 00000000000..eedc1e85891 --- /dev/null +++ b/llvm/test/Analysis/TypeBasedAliasAnalysis/licm.ll @@ -0,0 +1,33 @@ +; RUN: opt -tbaa -licm -enable-tbaa -S < %s | FileCheck %s + +; LICM should be able to hoist the address load out of the loop +; by using TBAA information. + +; CHECK: entry: +; CHECK-NEXT: %tmp3 = load double** @P, !tbaa !0 +; CHECK-NEXT: br label %for.body + +@P = common global double* null + +define void @foo(i64 %n) nounwind { +entry: + br label %for.body + +for.body: ; preds = %entry, %for.body + %i.07 = phi i64 [ %inc, %for.body ], [ 0, %entry ] + %tmp3 = load double** @P, !tbaa !1 + %scevgep = getelementptr double* %tmp3, i64 %i.07 + %tmp4 = load double* %scevgep, !tbaa !2 + %mul = fmul double %tmp4, 2.300000e+00 + store double %mul, double* %scevgep, !tbaa !2 + %inc = add i64 %i.07, 1 + %exitcond = icmp eq i64 %inc, %n + br i1 %exitcond, label %for.end, label %for.body + +for.end: ; preds = %for.body, %entry + ret void +} + +!0 = metadata !{metadata !"root", null} +!1 = metadata !{metadata !"pointer", metadata !0} +!2 = metadata !{metadata !"double", metadata !0} |