main
stflrs 2 years ago
parent 3ee53c626c
commit f6e32115c8

@ -20,6 +20,18 @@ size_t Ifnum = 0;
Ptr<AllocaInst> retAlloca;
SysYF::Ptr<SysYF::IR::BasicBlock> retbb;
/* enum Condtype
{
equal,
greater,
less,
ge,
le,
notequal
}condtype_; */
SysYF::Ptr<SysYF::IR::CmpInst> _cmp;
// store temporary value
Ptr<Value> tmp_val = nullptr;
// types
@ -272,8 +284,22 @@ void IRBuilder::visit(SyntaxTree::IfStmt &node) {
bbAfter = BasicBlock::create(module, s + num, ParentFunc);
node.cond_exp->accept(*this);
auto CondType = tmp_val->get_type();
if(node.else_statement)
builder->create_cond_br(_cmp, bbTrue, bbFalse);
else
builder->create_cond_br(_cmp, bbTrue, bbAfter);
builder->set_insert_point(bbTrue);
node.if_statement->accept(*this);
builder->create_br(bbAfter);
if(node.else_statement){
builder->set_insert_point(bbTrue);
node.else_statement->accept(*this);
builder->create_br(bbAfter);
}
builder->set_insert_point(bbAfter);
}
void IRBuilder::visit(SyntaxTree::WhileStmt &node) {}

Loading…
Cancel
Save