mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-26 04:32:44 +01: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> llvm-svn: 206323
This commit is contained in:
parent
216ae0fd5e
commit
d5cce12997
@ -826,15 +826,21 @@ FastISel::SelectInstruction(const Instruction *I) {
|
||||
|
||||
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)) {
|
||||
const Function *F = Call->getCalledFunction();
|
||||
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() &&
|
||||
LibInfo->getLibFunc(F->getName(), Func) &&
|
||||
LibInfo->hasOptimizedCodeGen(Func))
|
||||
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.
|
||||
|
@ -1,5 +1,6 @@
|
||||
; 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 -O0 | FileCheck %s -check-prefix=FUNC
|
||||
; RUN: llc -mtriple=armv7-unknown-nacl -filetype=obj %s -o - \
|
||||
; RUN: | llvm-objdump -disassemble -triple armv7-unknown-nacl - \
|
||||
; RUN: | FileCheck %s -check-prefix=ENCODING-NACL
|
||||
|
Loading…
Reference in New Issue
Block a user