16389dd9fSOleg Ranevskyy; This test ensures the @llvm.debugtrap() call is not removed when generating 26389dd9fSOleg Ranevskyy; the 'pop' instruction to restore the callee saved registers on ARM. 36389dd9fSOleg Ranevskyy 4*4bb928c1SPeter Collingbourne; RUN: llc < %s -mtriple=armv4 -O0 -filetype=asm | FileCheck --check-prefixes=CHECK,V4 %s 5*4bb928c1SPeter Collingbourne; RUN: llc < %s -mtriple=armv5 -O0 -filetype=asm | FileCheck --check-prefixes=CHECK,V5 %s 6*4bb928c1SPeter Collingbourne; RUN: llc < %s -mtriple=thumbv4 -O0 -filetype=asm | FileCheck --check-prefixes=CHECK,V4 %s 7*4bb928c1SPeter Collingbourne; RUN: llc < %s -mtriple=thumbv5 -O0 -filetype=asm | FileCheck --check-prefixes=CHECK,V5 %s 86389dd9fSOleg Ranevskyy 96389dd9fSOleg Ranevskyydeclare void @llvm.debugtrap() nounwind 106389dd9fSOleg Ranevskyydeclare void @foo() nounwind 116389dd9fSOleg Ranevskyy 126389dd9fSOleg Ranevskyydefine void @test() nounwind { 136389dd9fSOleg Ranevskyyentry: 146389dd9fSOleg Ranevskyy ; CHECK: bl foo 15*4bb928c1SPeter Collingbourne ; V4-NEXT: udf #254 16*4bb928c1SPeter Collingbourne ; V5-NEXT: bkpt #0 176389dd9fSOleg Ranevskyy ; CHECK-NEXT: pop 186389dd9fSOleg Ranevskyy call void @foo() 196389dd9fSOleg Ranevskyy call void @llvm.debugtrap() 206389dd9fSOleg Ranevskyy ret void 216389dd9fSOleg Ranevskyy} 22