mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
0d2047fa29
GlobalDCE deletes global vars and updates their initializers to nullptr while leaving underlying constants to be cleaned up later by its uses. The clean up may never happen, fix this by forcing it every time it's safe to destroy constants. Final patch by Rafael Espindola http://reviews.llvm.org/D4931 <rdar://problem/17523868> llvm-svn: 216390
17 lines
429 B
LLVM
17 lines
429 B
LLVM
; RUN: opt -globaldce -simplifycfg -S < %s | FileCheck %s
|
|
|
|
; Tests whether globaldce does the right cleanup while removing @bar
|
|
; so that a dead BlockAddress reference to foo won't prevent other passes
|
|
; to work properly, e.g. simplifycfg
|
|
@bar = internal unnamed_addr constant i8* blockaddress(@foo, %L1)
|
|
|
|
; CHECK-LABEL: foo
|
|
; CHECK-NOT: br label %L1
|
|
; CHECK: ret void
|
|
define void @foo() {
|
|
entry:
|
|
br label %L1
|
|
L1:
|
|
ret void
|
|
}
|