mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-05-06 16:38:48 +00:00
Make FastISel::SelectInstruction return before target specific fast-isel code
handles Intrinsic::trap if TargetOptions::TrapFuncName is set. This fixes a bug in which the trap function was not taken into consideration when a program was compiled without optimization (at -O0). <rdar://problem/16291933> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206323 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
749e8fee34
commit
f3930395f5
@ -826,15 +826,21 @@ FastISel::SelectInstruction(const Instruction *I) {
|
|||||||
|
|
||||||
MachineBasicBlock::iterator SavedInsertPt = FuncInfo.InsertPt;
|
MachineBasicBlock::iterator SavedInsertPt = FuncInfo.InsertPt;
|
||||||
|
|
||||||
// As a special case, don't handle calls to builtin library functions that
|
|
||||||
// may be translated directly to target instructions.
|
|
||||||
if (const CallInst *Call = dyn_cast<CallInst>(I)) {
|
if (const CallInst *Call = dyn_cast<CallInst>(I)) {
|
||||||
const Function *F = Call->getCalledFunction();
|
const Function *F = Call->getCalledFunction();
|
||||||
LibFunc::Func Func;
|
LibFunc::Func Func;
|
||||||
|
|
||||||
|
// As a special case, don't handle calls to builtin library functions that
|
||||||
|
// may be translated directly to target instructions.
|
||||||
if (F && !F->hasLocalLinkage() && F->hasName() &&
|
if (F && !F->hasLocalLinkage() && F->hasName() &&
|
||||||
LibInfo->getLibFunc(F->getName(), Func) &&
|
LibInfo->getLibFunc(F->getName(), Func) &&
|
||||||
LibInfo->hasOptimizedCodeGen(Func))
|
LibInfo->hasOptimizedCodeGen(Func))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
// Don't handle Intrinsic::trap if a trap funciton is specified.
|
||||||
|
if (F && F->getIntrinsicID() == Intrinsic::trap &&
|
||||||
|
!TM.Options.getTrapFunctionName().empty())
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// First, try doing target-independent selection.
|
// First, try doing target-independent selection.
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
; RUN: llc < %s -mtriple=arm-apple-darwin | FileCheck %s -check-prefix=INSTR
|
; RUN: llc < %s -mtriple=arm-apple-darwin | FileCheck %s -check-prefix=INSTR
|
||||||
; RUN: llc < %s -mtriple=arm-apple-darwin -trap-func=_trap | FileCheck %s -check-prefix=FUNC
|
; RUN: llc < %s -mtriple=arm-apple-darwin -trap-func=_trap | FileCheck %s -check-prefix=FUNC
|
||||||
|
; RUN: llc < %s -mtriple=arm-apple-darwin -trap-func=_trap -O0 | FileCheck %s -check-prefix=FUNC
|
||||||
; RUN: llc -mtriple=armv7-unknown-nacl -filetype=obj %s -o - \
|
; RUN: llc -mtriple=armv7-unknown-nacl -filetype=obj %s -o - \
|
||||||
; RUN: | llvm-objdump -disassemble -triple armv7-unknown-nacl - \
|
; RUN: | llvm-objdump -disassemble -triple armv7-unknown-nacl - \
|
||||||
; RUN: | FileCheck %s -check-prefix=ENCODING-NACL
|
; RUN: | FileCheck %s -check-prefix=ENCODING-NACL
|
||||||
|
Loading…
x
Reference in New Issue
Block a user