2015-08-28 08:16:18 +08:00
|
|
|
; We previously had a case where we would put results from a no-args call in
|
|
|
|
; its own stratified set. This would make cases like the one in @test say that
|
|
|
|
; nothing (except %Escapes and %Arg) can alias
|
|
|
|
|
2020-06-27 11:55:44 +08:00
|
|
|
; RUN: opt < %s -disable-basic-aa -cfl-steens-aa -aa-eval -print-all-alias-modref-info -disable-output 2>&1 | FileCheck %s
|
2015-08-28 08:16:18 +08:00
|
|
|
|
|
|
|
; CHECK: Function: test
|
2016-06-15 02:12:28 +08:00
|
|
|
; CHECK: NoAlias: i8* %Arg, i8* %Escapes
|
2015-08-28 08:16:18 +08:00
|
|
|
; CHECK: MayAlias: i8* %Arg, i8* %Retrieved
|
|
|
|
; CHECK: MayAlias: i8* %Escapes, i8* %Retrieved
|
|
|
|
define void @test(i8* %Arg) {
|
|
|
|
%Noalias = alloca i8
|
|
|
|
%Escapes = alloca i8
|
|
|
|
call void @set_thepointer(i8* %Escapes)
|
|
|
|
%Retrieved = call i8* @get_thepointer()
|
|
|
|
ret void
|
|
|
|
}
|
|
|
|
|
|
|
|
declare void @set_thepointer(i8* %P)
|
|
|
|
declare i8* @get_thepointer()
|