forked from OSchip/llvm-project
[NFC] Wisely nest dyn_cast in FunctionLoweringInfo
Take advantage of the inheritance tree to avoid a few comparison.
This commit is contained in:
parent
3c03635d53
commit
6e040a19db
|
@ -192,10 +192,8 @@ void FunctionLoweringInfo::set(const Function &fn, MachineFunction &mf,
|
|||
MF->getFrameInfo().CreateVariableSizedObject(
|
||||
Alignment <= StackAlign ? Align(1) : Alignment, AI);
|
||||
}
|
||||
}
|
||||
|
||||
// Look for inline asm that clobbers the SP register.
|
||||
if (auto *Call = dyn_cast<CallBase>(&I)) {
|
||||
} else if (auto *Call = dyn_cast<CallBase>(&I)) {
|
||||
// Look for inline asm that clobbers the SP register.
|
||||
if (Call->isInlineAsm()) {
|
||||
Register SP = TLI->getStackPointerRegisterToSaveRestore();
|
||||
const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo();
|
||||
|
@ -214,21 +212,20 @@ void FunctionLoweringInfo::set(const Function &fn, MachineFunction &mf,
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// Look for calls to the @llvm.va_start intrinsic. We can omit some
|
||||
// prologue boilerplate for variadic functions that don't examine their
|
||||
// arguments.
|
||||
if (const auto *II = dyn_cast<IntrinsicInst>(&I)) {
|
||||
if (II->getIntrinsicID() == Intrinsic::vastart)
|
||||
MF->getFrameInfo().setHasVAStart(true);
|
||||
}
|
||||
|
||||
// Look for calls to the @llvm.va_start intrinsic. We can omit some
|
||||
// prologue boilerplate for variadic functions that don't examine their
|
||||
// arguments.
|
||||
if (const auto *II = dyn_cast<IntrinsicInst>(&I)) {
|
||||
if (II->getIntrinsicID() == Intrinsic::vastart)
|
||||
MF->getFrameInfo().setHasVAStart(true);
|
||||
}
|
||||
|
||||
// If we have a musttail call in a variadic function, we need to ensure we
|
||||
// forward implicit register parameters.
|
||||
if (const auto *CI = dyn_cast<CallInst>(&I)) {
|
||||
if (CI->isMustTailCall() && Fn->isVarArg())
|
||||
MF->getFrameInfo().setHasMustTailInVarArgFunc(true);
|
||||
// If we have a musttail call in a variadic function, we need to ensure
|
||||
// we forward implicit register parameters.
|
||||
if (const auto *CI = dyn_cast<CallInst>(&I)) {
|
||||
if (CI->isMustTailCall() && Fn->isVarArg())
|
||||
MF->getFrameInfo().setHasMustTailInVarArgFunc(true);
|
||||
}
|
||||
}
|
||||
|
||||
// Mark values used outside their block as exported, by allocating
|
||||
|
|
Loading…
Reference in New Issue