1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00
llvm-mirror/test/Analysis/CFLAliasAnalysis/basic-interproc-ret.ll
Hal Finkel d6c22399e6 [CFL-AA] Update for handling of globals and more tests
We used to return PartialAlias if *either* variable being queried interacted
with arguments or globals. AFAICT, we can change this to only returning
MayAlias iff *both* variables being queried interacted with arguments or
globals.

Also, adding some basic functionality tests: some basic IPA tests, checking
that we give conservative responses with arguments/globals thrown in the mix,
and ensuring that we trace values through stores and loads.

Note that saying that 'x' interacted with arguments or globals means that the
Attributes of the StratifiedSet that 'x' belongs to has any bits set.

Patch by George Burgess IV, thanks!

llvm-svn: 219122
2014-10-06 14:42:56 +00:00

27 lines
688 B
LLVM

; This testcase ensures that CFL AA gives conservative answers on variables
; that involve arguments.
; RUN: opt < %s -cfl-aa -aa-eval -print-may-aliases -disable-output 2>&1 | FileCheck %s
; CHECK: Function: test
; CHECK: 4 Total Alias Queries Performed
; CHECK: 3 no alias responses
; ^ The 1 MayAlias is due to %arg1. Sadly, we don't currently have machinery
; in place to check whether %arg1 aliases %a, because BasicAA takes care of
; that for us.
define i32* @test2(i32* %arg1) {
store i32 0, i32* %arg1
%a = alloca i32, align 4
ret i32* %a
}
define void @test() {
%a = alloca i32, align 4
%b = alloca i32, align 4
%c = call i32* @test2(i32* %a)
ret void
}