85d1ae5b1b53573e9685792eb9c51b4e1f051c69
[oota-llvm.git] / test / Other / extract-alias.ll
1 ; RUN: llvm-extract -func foo -S < %s | FileCheck %s
2 ; RUN: llvm-extract -delete -func foo -S < %s | FileCheck --check-prefix=DELETE %s
3
4 ; Both aliases should be converted to declarations
5 ; CHECK:      @zeda0 = external global i32
6 ; CHECK:      define i32* @foo() {
7 ; CHECK-NEXT:  call void @a0bar()
8 ; CHECK-NEXT:  ret i32* @zeda0
9 ; CHECK-NEXT: }
10 ; CHECK:      declare void @a0bar()
11
12 ; DELETE:      @zed = global i32 0
13 ; DELETE:      @zeda0 = alias i32* @zed
14 ; DELETE-NEXT: @a0foo = alias i32* ()* @foo
15 ; DELETE-NEXT: @a0a0bar = alias void ()* @a0bar
16 ; DELETE-NEXT: @a0bar = alias void ()* @bar
17 ; DELETE:      declare i32* @foo()
18 ; DELETE:      define void @bar() {
19 ; DELETE-NEXT:  %c = call i32* @foo()
20 ; DELETE-NEXT:  ret void
21 ; DELETE-NEXT: }
22
23 @zed = global i32 0
24 @zeda0 = alias i32* @zed
25
26 @a0foo = alias i32* ()* @foo
27
28 define i32* @foo() {
29   call void @a0bar()
30   ret i32* @zeda0
31 }
32
33 @a0a0bar = alias void ()* @a0bar
34
35 @a0bar = alias void ()* @bar
36
37 define void @bar() {
38   %c = call i32* @foo()
39   ret void
40 }