ΒΆvoid makeGuardControlFlowExplicit(
llvm::Function* DeoptIntrinsic,
llvm::CallInst* Guard,
bool UseWC)
void makeGuardControlFlowExplicit(
llvm::Function* DeoptIntrinsic,
llvm::CallInst* Guard,
bool UseWC)
Description
Splits control flow at point of \p Guard, replacing it with explicit branch by the condition of guard's first argument. The taken branch then goes to the block that contains \p Guard's successors, and the non-taken branch goes to a newly-created deopt block that contains a sole call of the deoptimize function \p DeoptIntrinsic. If 'UseWC' is set, preserve the widenable nature of the guard by lowering to equivelent form. If not set, lower to a form without widenable semantics.
Declared at: llvm/include/llvm/Transforms/Utils/GuardUtils.h:29
Parameters
- llvm::Function* DeoptIntrinsic
- llvm::CallInst* Guard
- bool UseWC