ΒΆ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