-; RUN: llvm-as < %s | llc -march=arm &&
-; RUN: llvm-as < %s | llc -march=arm | grep bl &&
-; RUN: llvm-as < %s | llc -march=arm | grep blx
+; RUN: llvm-as < %s | llc -march=arm | grep {mov lr, pc}
+; RUN: llvm-as < %s | llc -march=arm -mattr=+v5t | grep blx
+; RUN: llvm-as < %s | llc -march=arm -mtriple=arm-linux-gnueabi\
+; RUN: -relocation-model=pic | grep {PLT}
-void %f() {
-entry:
- call void %g( int 1, int 2, int 3, int 4 )
- call fastcc void %h()
- ret void
-}
+@t = weak global i32 ()* null ; <i32 ()**> [#uses=1]
+
+declare void @g(i32, i32, i32, i32)
-declare void %g(int, int, int, int)
-declare fastcc void %h()
+define void @f() {
+ call void @g( i32 1, i32 2, i32 3, i32 4 )
+ ret void
+}
-void %g(void (...)* %g) {
-entry:
- %g_c = cast void (...)* %g to void ()*
- call void %g_c( )
- ret void
+define void @g.upgrd.1() {
+ %tmp = load i32 ()** @t ; <i32 ()*> [#uses=1]
+ %tmp.upgrd.2 = tail call i32 %tmp( ) ; <i32> [#uses=0]
+ ret void
}