diff options
Diffstat (limited to 'test/Analysis/CFLAliasAnalysis/multilevel.ll')
-rw-r--r-- | test/Analysis/CFLAliasAnalysis/multilevel.ll | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/test/Analysis/CFLAliasAnalysis/multilevel.ll b/test/Analysis/CFLAliasAnalysis/multilevel.ll new file mode 100644 index 0000000..9c9eb9a --- /dev/null +++ b/test/Analysis/CFLAliasAnalysis/multilevel.ll @@ -0,0 +1,30 @@ +; This testcase ensures that CFL AA handles trivial cases with storing +; pointers in pointers appropriately. +; Derived from: +; char a, b; +; char *m = &a, *n = &b; +; *m; +; *n; + +; RUN: opt < %s -cfl-aa -aa-eval -print-may-aliases -disable-output 2>&1 | FileCheck %s + +%T = type { i32, [10 x i8] } + +; CHECK: Function: test + +define void @test() { +; CHECK: 15 Total Alias Queries Performed +; CHECK: 13 no alias responses + %M = alloca %T*, align 8 + %N = alloca %T*, align 8 + %A = alloca %T, align 8 + %B = alloca %T, align 8 + + store %T* %A, %T** %M + store %T* %B, %T** %N + + %AP = load %T** %M ; PartialAlias with %A + %BP = load %T** %N ; PartialAlias with %B + + ret void +} |