aboutsummaryrefslogtreecommitdiff
path: root/lib/CodeGen/BooleanHandler.cc
blob: 558ac95810ff207706292fb54f2cc13e484dd99b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

#include "cps/BooleanHandler.h"

using namespace llvm;
using namespace cps;

void BooleanHandler::emitDeclare(const std::string &Name) {
    Function *TheFunction = Builder.GetInsertBlock()->getParent();
    IRBuilder<> TmpB(&TheFunction->getEntryBlock(), TheFunction->getEntryBlock().begin());
    AllocaInst *Alloca = TmpB.CreateAlloca(Type::getInt1Ty(Context), nullptr, Name);
    Builder.CreateStore(ConstantInt::get(Context, APInt(1, 0)), Alloca);
    NamedValues[Name] = Alloca;
}

Value *BooleanHandler::createLiteral(bool Val) {
    return ConstantInt::get(Context, APInt(1, Val ? 1 : 0));
}