1; RUN: llc -mtriple=armv7a-linux-gnueabihf -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK-ARM 2; RUN: llc -mtriple=armv7a-linux-gnueabihf -verify-machineinstrs -fast-isel %s -o - | FileCheck %s --check-prefix=CHECK-ARM-FAST-ISEL 3; RUN: llc -mtriple=armv7a-linux-gnueabihf -verify-machineinstrs -global-isel -global-isel-abort=2 %s -o - | FileCheck %s --check-prefix=CHECK-ARM-GLOBAL-ISEL 4; RUN: llc -mtriple=thumbv7a-linux-gnueabihf -verify-machineinstrs %s -o - | FileCheck %s --check-prefix=CHECK-THUMB 5; RUN: llc -mtriple=thumbv7a-linux-gnueabihf -verify-machineinstrs -fast-isel %s -o - | FileCheck %s --check-prefix=CHECK-THUMB-FAST-ISEL 6; RUN: llc -mtriple=thumbv7a-linux-gnueabihf -verify-machineinstrs -global-isel -global-isel-abort=2 %s -o - | FileCheck %s --check-prefix=CHECK-THUMB-GLOBAL-ISEL 7 8define dso_local void @callee() #0 { 9; CHECK-ARM: stmdb sp!, {lr} 10; CHECK-ARM-NEXT: bl __gnu_mcount_nc 11; CHECK-ARM-FAST-ISEL: stmdb sp!, {lr} 12; CHECK-ARM-FAST-ISEL-NEXT: bl __gnu_mcount_nc 13; CHECK-ARM-GLOBAL-ISEL: stmdb sp!, {lr} 14; CHECK-ARM-GLOBAL-ISEL-NEXT: bl __gnu_mcount_nc 15; CHECK-THUMB: push {lr} 16; CHECK-THUMB-NEXT: bl __gnu_mcount_nc 17; CHECK-THUMB-FAST-ISEL: push {lr} 18; CHECK-THUMB-FAST-ISEL-NEXT: bl __gnu_mcount_nc 19; CHECK-THUMB-GLOBAL-ISEL: push {lr} 20; CHECK-THUMB-GLOBAL-ISEL-NEXT: bl __gnu_mcount_nc 21 call void @llvm.arm.gnu.eabi.mcount() 22 ret void 23} 24 25define dso_local void @caller() #0 { 26; CHECK-ARM: stmdb sp!, {lr} 27; CHECK-ARM-NEXT: bl __gnu_mcount_nc 28; CHECK-ARM-FAST-ISEL: stmdb sp!, {lr} 29; CHECK-ARM-FAST-ISEL-NEXT: bl __gnu_mcount_nc 30; CHECK-ARM-GLOBAL-ISEL: stmdb sp!, {lr} 31; CHECK-ARM-GLOBAL-ISEL-NEXT: bl __gnu_mcount_nc 32; CHECK-THUMB: push {lr} 33; CHECK-THUMB-NEXT: bl __gnu_mcount_nc 34; CHECK-THUMB-FAST-ISEL: push {lr} 35; CHECK-THUMB-FAST-ISEL-NEXT: bl __gnu_mcount_nc 36; CHECK-THUMB-GLOBAL-ISEL: push {lr} 37; CHECK-THUMB-GLOBAL-ISEL-NEXT: bl __gnu_mcount_nc 38 call void @llvm.arm.gnu.eabi.mcount() 39 call void @callee() 40 ret void 41} 42 43declare void @llvm.arm.gnu.eabi.mcount() #1 44 45attributes #0 = { nofree nounwind } 46attributes #1 = { nounwind } 47