mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
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
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
; 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" }
|
||||
Reference in New Issue
Block a user