24 const bool chain_to_next,
25 const std::string& label_prefix,
27 const bool share_false_edge_with_parent)
28 :
executor_(executor), chain_to_next_(chain_to_next), parent_(parent) {
29 auto* cgen_state =
executor_->cgen_state_.get();
36 cgen_state->context_, label_prefix +
"_true", cgen_state->current_func_);
37 if (share_false_edge_with_parent) {
42 cgen_state->context_, label_prefix +
"_false", cgen_state->current_func_);
46 cgen_state->ir_builder_.SetInsertPoint(
cond_true_);
61 auto& builder =
executor_->cgen_state_->ir_builder_;
llvm::BasicBlock * cond_false_
DiamondCodegen(llvm::Value *cond, Executor *executor, const bool chain_to_next, const std::string &label_prefix, DiamondCodegen *parent, const bool share_false_edge_with_parent)
void setFalseTarget(llvm::BasicBlock *cond_false)
llvm::BasicBlock * cond_true_
llvm::BasicBlock * orig_cond_false_