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