mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
9a136f0e41
BasicAA in r290603. I've kept the basic testing in the new PM test file as that also covers the AAManager invalidation logic. If/when there is a good place for broader AA testing it could move there. This test is somewhat unsatisfying as I can't get it to fail even with ASan outside of explicit checks of the invalidation. Apparently we don't yet have any test coverage of the BasicAA code paths using either the domtree or loopinfo -- I made both of them always be null and check-llvm passed. llvm-svn: 290612
48 lines
1.9 KiB
LLVM
48 lines
1.9 KiB
LLVM
; Test that the BasicAA analysis gets invalidated when its dependencies go
|
|
; away.
|
|
;
|
|
; Check DomTree specifically.
|
|
; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
|
|
; RUN: -passes='require<aa>,invalidate<domtree>,aa-eval' -aa-pipeline='basic-aa' \
|
|
; RUN: | FileCheck %s --check-prefix=CHECK-DT-INVALIDATE
|
|
; CHECK-DT-INVALIDATE: Running pass: RequireAnalysisPass
|
|
; CHECK-DT-INVALIDATE: Running analysis: BasicAA
|
|
; CHECK-DT-INVALIDATE: Running pass: InvalidateAnalysisPass
|
|
; CHECK-DT-INVALIDATE: Invalidating analysis: DominatorTreeAnalysis
|
|
; CHECK-DT-INVALIDATE: Invalidating analysis: BasicAA
|
|
; CHECK-DT-INVALIDATE: Running pass: AAEvaluator
|
|
; CHECK-DT-INVALIDATE: Running analysis: BasicAA
|
|
;
|
|
; Check LoopInfo specifically.
|
|
; RUN: opt -disable-output -disable-verify -debug-pass-manager %s 2>&1 \
|
|
; RUN: -passes='require<loops>,require<aa>,invalidate<loops>,aa-eval' -aa-pipeline='basic-aa' \
|
|
; RUN: | FileCheck %s --check-prefix=CHECK-LI-INVALIDATE
|
|
; CHECK-LI-INVALIDATE: Running pass: RequireAnalysisPass
|
|
; CHECK-LI-INVALIDATE: Running analysis: BasicAA
|
|
; CHECK-LI-INVALIDATE: Running pass: InvalidateAnalysisPass
|
|
; CHECK-LI-INVALIDATE: Invalidating analysis: LoopAnalysis
|
|
; CHECK-LI-INVALIDATE: Invalidating analysis: BasicAA
|
|
; CHECK-LI-INVALIDATE: Running pass: AAEvaluator
|
|
; CHECK-LI-INVALIDATE: Running analysis: BasicAA
|
|
|
|
; Some code that will result in actual AA queries, including inside of a loop.
|
|
; FIXME: Sadly, none of these queries managed to use either the domtree or
|
|
; loopinfo that basic-aa cache. But nor does any other test in LLVM. It would
|
|
; be good to enhance this to actually use these other analyses to make this
|
|
; a more thorough test.
|
|
define void @foo(i1 %x, i8* %p1, i8* %p2) {
|
|
entry:
|
|
%p3 = alloca i8
|
|
store i8 42, i8* %p1
|
|
%gep2 = getelementptr i8, i8* %p2, i32 0
|
|
br i1 %x, label %loop, label %exit
|
|
|
|
loop:
|
|
store i8 13, i8* %p3
|
|
%tmp1 = load i8, i8* %gep2
|
|
br label %loop
|
|
|
|
exit:
|
|
ret void
|
|
}
|