1*9880d681SAndroid Build Coastguard Worker; RUN: llvm-extract -func foo -S < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker; RUN: llvm-extract -delete -func foo -S < %s | FileCheck --check-prefix=DELETE %s 3*9880d681SAndroid Build Coastguard Worker; RUN: llvm-extract -alias zeda0 -S < %s | FileCheck --check-prefix=ALIAS %s 4*9880d681SAndroid Build Coastguard Worker; RUN: llvm-extract -ralias '.*bar' -S < %s | FileCheck --check-prefix=ALIASRE %s 5*9880d681SAndroid Build Coastguard Worker 6*9880d681SAndroid Build Coastguard Worker; Both aliases should be converted to declarations 7*9880d681SAndroid Build Coastguard Worker; CHECK: @zeda0 = external global i32 8*9880d681SAndroid Build Coastguard Worker; CHECK: define i32* @foo() { 9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: call void @a0bar() 10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: ret i32* @zeda0 11*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: } 12*9880d681SAndroid Build Coastguard Worker; CHECK: declare void @a0bar() 13*9880d681SAndroid Build Coastguard Worker 14*9880d681SAndroid Build Coastguard Worker; DELETE: @zed = global i32 0 15*9880d681SAndroid Build Coastguard Worker; DELETE: @zeda0 = alias i32, i32* @zed 16*9880d681SAndroid Build Coastguard Worker; DELETE-NEXT: @a0foo = alias i32* (), i32* ()* @foo 17*9880d681SAndroid Build Coastguard Worker; DELETE-NEXT: @a0a0bar = alias void (), void ()* @bar 18*9880d681SAndroid Build Coastguard Worker; DELETE-NEXT: @a0bar = alias void (), void ()* @bar 19*9880d681SAndroid Build Coastguard Worker; DELETE: declare i32* @foo() 20*9880d681SAndroid Build Coastguard Worker; DELETE: define void @bar() { 21*9880d681SAndroid Build Coastguard Worker; DELETE-NEXT: %c = call i32* @foo() 22*9880d681SAndroid Build Coastguard Worker; DELETE-NEXT: ret void 23*9880d681SAndroid Build Coastguard Worker; DELETE-NEXT: } 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker; ALIAS: @zed = external global i32 26*9880d681SAndroid Build Coastguard Worker; ALIAS: @zeda0 = alias i32, i32* @zed 27*9880d681SAndroid Build Coastguard Worker 28*9880d681SAndroid Build Coastguard Worker; ALIASRE: @a0a0bar = alias void (), void ()* @bar 29*9880d681SAndroid Build Coastguard Worker; ALIASRE: @a0bar = alias void (), void ()* @bar 30*9880d681SAndroid Build Coastguard Worker; ALIASRE: declare void @bar() 31*9880d681SAndroid Build Coastguard Worker 32*9880d681SAndroid Build Coastguard Worker@zed = global i32 0 33*9880d681SAndroid Build Coastguard Worker@zeda0 = alias i32, i32* @zed 34*9880d681SAndroid Build Coastguard Worker 35*9880d681SAndroid Build Coastguard Worker@a0foo = alias i32* (), i32* ()* @foo 36*9880d681SAndroid Build Coastguard Worker 37*9880d681SAndroid Build Coastguard Workerdefine i32* @foo() { 38*9880d681SAndroid Build Coastguard Worker call void @a0bar() 39*9880d681SAndroid Build Coastguard Worker ret i32* @zeda0 40*9880d681SAndroid Build Coastguard Worker} 41*9880d681SAndroid Build Coastguard Worker 42*9880d681SAndroid Build Coastguard Worker@a0a0bar = alias void (), void ()* @bar 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker@a0bar = alias void (), void ()* @bar 45*9880d681SAndroid Build Coastguard Worker 46*9880d681SAndroid Build Coastguard Workerdefine void @bar() { 47*9880d681SAndroid Build Coastguard Worker %c = call i32* @foo() 48*9880d681SAndroid Build Coastguard Worker ret void 49*9880d681SAndroid Build Coastguard Worker} 50