OmniSciDB  dfae7c3b14
GroupByAndAggregate::DiamondCodegen Struct Reference

#include <GroupByAndAggregate.h>

+ Collaboration diagram for GroupByAndAggregate::DiamondCodegen:

Public Member Functions

 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 setChainToNext ()
 
void setFalseTarget (llvm::BasicBlock *cond_false)
 
 ~DiamondCodegen ()
 

Public Attributes

Executorexecutor_
 
llvm::BasicBlock * cond_true_
 
llvm::BasicBlock * cond_false_
 
llvm::BasicBlock * orig_cond_false_
 
bool chain_to_next_
 
DiamondCodegenparent_
 

Detailed Description

Definition at line 150 of file GroupByAndAggregate.h.

Constructor & Destructor Documentation

◆ DiamondCodegen()

GroupByAndAggregate::DiamondCodegen::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 
)

Definition at line 902 of file GroupByAndAggregate.cpp.

References AUTOMATIC_IR_METADATA, chain_to_next_, CHECK, cond_false_, cond_true_, CUR_FUNC, executor_, LL_BUILDER, LL_CONTEXT, orig_cond_false_, and parent_.

909  : executor_(executor), chain_to_next_(chain_to_next), parent_(parent) {
910  AUTOMATIC_IR_METADATA(executor_->cgen_state_.get());
911  if (parent_) {
913  }
914  cond_true_ = llvm::BasicBlock::Create(LL_CONTEXT, label_prefix + "_true", CUR_FUNC);
915  if (share_false_edge_with_parent) {
916  CHECK(parent);
918  } else {
920  llvm::BasicBlock::Create(LL_CONTEXT, label_prefix + "_false", CUR_FUNC);
921  }
922 
923  LL_BUILDER.CreateCondBr(cond, cond_true_, cond_false_);
924  LL_BUILDER.SetInsertPoint(cond_true_);
925 }
#define LL_BUILDER
#define LL_CONTEXT
#define AUTOMATIC_IR_METADATA(CGENSTATE)
#define CHECK(condition)
Definition: Logger.h:197
#define CUR_FUNC

◆ ~DiamondCodegen()

GroupByAndAggregate::DiamondCodegen::~DiamondCodegen ( )

Definition at line 937 of file GroupByAndAggregate.cpp.

References AUTOMATIC_IR_METADATA, chain_to_next_, cond_false_, executor_, LL_BUILDER, orig_cond_false_, and parent_.

937  {
938  AUTOMATIC_IR_METADATA(executor_->cgen_state_.get());
940  LL_BUILDER.CreateBr(parent_->cond_false_);
941  } else if (chain_to_next_) {
942  LL_BUILDER.CreateBr(cond_false_);
943  }
945  LL_BUILDER.SetInsertPoint(orig_cond_false_);
946  }
947 }
#define LL_BUILDER
#define AUTOMATIC_IR_METADATA(CGENSTATE)

Member Function Documentation

◆ setChainToNext()

void GroupByAndAggregate::DiamondCodegen::setChainToNext ( )

Definition at line 927 of file GroupByAndAggregate.cpp.

References chain_to_next_, CHECK, and parent_.

927  {
928  CHECK(!parent_);
929  chain_to_next_ = true;
930 }
#define CHECK(condition)
Definition: Logger.h:197

◆ setFalseTarget()

void GroupByAndAggregate::DiamondCodegen::setFalseTarget ( llvm::BasicBlock *  cond_false)

Definition at line 932 of file GroupByAndAggregate.cpp.

References CHECK, cond_false_, orig_cond_false_, and parent_.

Referenced by Executor::groupByColumnCodegen().

932  {
934  cond_false_ = cond_false;
935 }
#define CHECK(condition)
Definition: Logger.h:197
+ Here is the caller graph for this function:

Member Data Documentation

◆ chain_to_next_

bool GroupByAndAggregate::DiamondCodegen::chain_to_next_

Definition at line 165 of file GroupByAndAggregate.h.

Referenced by DiamondCodegen(), setChainToNext(), and ~DiamondCodegen().

◆ cond_false_

llvm::BasicBlock* GroupByAndAggregate::DiamondCodegen::cond_false_

◆ cond_true_

llvm::BasicBlock* GroupByAndAggregate::DiamondCodegen::cond_true_

Definition at line 162 of file GroupByAndAggregate.h.

Referenced by DiamondCodegen().

◆ executor_

◆ orig_cond_false_

llvm::BasicBlock* GroupByAndAggregate::DiamondCodegen::orig_cond_false_

◆ parent_

DiamondCodegen* GroupByAndAggregate::DiamondCodegen::parent_

The documentation for this struct was generated from the following files: