Just use BL all the time. It's safer that way.

Fixes rdar://9184526

llvm-svn: 128869
This commit is contained in:
Eric Christopher 2011-04-05 00:39:26 +00:00
parent 1635b37415
commit b04934036a

View File

@ -1690,17 +1690,9 @@ bool ARMFastISel::SelectRet(const Instruction *I) {
unsigned ARMFastISel::ARMSelectCallOp(const GlobalValue *GV) {
// Depend our opcode for thumb on whether or not we're targeting an
// externally callable function. For libcalls we'll just pass a NULL GV
// in here.
bool isExternal = false;
if (!GV || GV->hasExternalLinkage()) isExternal = true;
// Darwin needs the r9 versions of the opcodes.
bool isDarwin = Subtarget->isTargetDarwin();
if (isThumb && isExternal) {
return isDarwin ? ARM::tBLXi_r9 : ARM::tBLXi;
} else if (isThumb) {
if (isThumb) {
return isDarwin ? ARM::tBLr9 : ARM::tBL;
} else {
return isDarwin ? ARM::BLr9 : ARM::BL;