1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 20:43:44 +02:00
llvm-mirror/test/Verifier/alias.ll
Bob Wilson 80f0208e78 Fix verifier for GlobalAliases to avoid recursing into global initializers.
The verifier follows GlobalAlias operands so that it can detect cycles of
alias definitions. It was doing this in a way that caused it to also recurse
through initializers for the GlobalValue aliasees, and it would fail when
an initializer refers to a global that is a declaration and not a definition.
This patch causes it to stop recursing when it hits a global definition.
<rdar://problem/17277451>

llvm-svn: 210734
2014-06-12 01:46:54 +00:00

32 lines
798 B
LLVM

; RUN: not llvm-as %s -o /dev/null 2>&1 | FileCheck %s
declare void @f()
@fa = alias void ()* @f
; CHECK: Alias must point to a definition
; CHECK-NEXT: @fa
@g = external global i32
@ga = alias i32* @g
; CHECK: Alias must point to a definition
; CHECK-NEXT: @ga
; References to a global declaration from an initializer are OK.
@gptr = global i32* @g
@gptr_a = alias i32** @gptr
; CHECK-NOT: Alias must point to a definition
@test2_a = alias i32* @test2_b
@test2_b = alias i32* @test2_a
; CHECK: Aliases cannot form a cycle
; CHECK-NEXT: i32* @test2_a
; CHECK-NEXT: Aliases cannot form a cycle
; CHECK-NEXT: i32* @test2_b
@test3_a = global i32 42
@test3_b = alias weak i32* @test3_a
@test3_c = alias i32* @test3_b
; CHECK: Alias cannot point to a weak alias
; CHECK-NEXT: i32* @test3_c