llvm-6502/test/CodeGen/ARM/fnattr-trap.ll
Akira Hatanaka 516286ff69 Use function attribute "trap-func-name" and remove TargetOptions::TrapFuncName.
This commit changes normal isel and fast isel to read the user-defined trap
function name from function attribute "trap-func-name" attached to llvm.trap or
llvm.debugtrap instead of from TargetOptions::TrapFuncName. This is needed to
use clang's command line option "-ftrap-function" for LTO and enable changing
the trap function name on a per-call-site basis.

Out-of-tree projects currently using TargetOptions::TrapFuncName to specify the
trap function name should attach attribute "trap-func-name" to the call sites
of llvm.trap and llvm.debugtrap instead.

rdar://problem/21225723

Differential Revision: http://reviews.llvm.org/D10832


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241305 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-02 22:13:27 +00:00

41 lines
850 B
LLVM

; RUN: llc < %s -march arm | FileCheck %s -check-prefix=NOOPTION
; RUN: llc < %s -march arm -trap-func=trap_llc | FileCheck %s -check-prefix=TRAP
; NOOPTION-LABEL: {{\_?}}foo0:
; NOOPTION: trap{{$}}
; TRAP-LABEL: {{\_?}}foo0:
; TRAP: bl {{\_?}}trap_llc
define void @foo0() {
call void @llvm.trap()
unreachable
}
; NOOPTION-LABEL: {{\_?}}foo1:
; NOOPTION: bl {{\_?}}trap_func_attr0
; TRAP-LABEL: {{\_?}}foo1:
; TRAP: bl {{\_?}}trap_llc
define void @foo1() {
call void @llvm.trap() #0
unreachable
}
; NOOPTION-LABEL: {{\_?}}foo2:
; NOOPTION: bl {{\_?}}trap_func_attr1
; TRAP-LABEL: {{\_?}}foo2:
; TRAP: bl {{\_?}}trap_llc
define void @foo2() {
call void @llvm.trap() #1
unreachable
}
declare void @llvm.trap() nounwind
attributes #0 = { "trap-func-name"="trap_func_attr0" }
attributes #1 = { "trap-func-name"="trap_func_attr1" }