Commit c4678c53eec163956e1cb68570411d9f9899f854

Authored by Austin Sun
1 parent 7d4bb24f04
Exists in master

added the inc and dec double check with my implementation

Showing 2 changed files with 22 additions and 5 deletions Side-by-side Diff

... ... @@ -168,11 +168,15 @@
168 168 llvm::Value* l = l ? left->Emit() : NULL;
169 169 llvm::Value* r = r ? right->Emit() : NULL;
170 170 llvm::BasicBlock* b = irgen.GetBasicBlock();
171   - if(!l) { // TODO : Implement
  171 + //austins additional value
  172 + llvm::Value *val;
  173 + if(!l) {
172 174 if(op->getToken() == "++")
173   - return NULL;
  175 + val = llvm::ConstantInt::get(irgen.GetIntType(), 1);
  176 + return llvm::BinaryOperator::CreateAdd(l, val, "", irgen.GetBasicBlock());
174 177 if(op->getToken() == "--")
175   - return NULL;
  178 + val = llvm::ConstantInt::get(irgen.GetIntType(), 1);
  179 + return llvm::BinaryOperator::CreateSub(l, val, "", irgen.GetBasicBlock());
176 180 }
177 181 if(l->getType()->isFPOrFPVectorTy()) {
178 182 if(op->getToken() == "+")
... ... @@ -181,7 +181,6 @@
181 181 llvm::BasicBlock * bodyBlock = llvm::BasicBlock::Create(*context, "bodyBlock", func);
182 182 llvm::Value * condition;
183 183  
184   -
185 184 // init and branch to head
186 185 init->Emit();
187 186  
... ... @@ -280,7 +279,20 @@
280 279 }
281 280  
282 281 llvm::Value * SwitchStmt::Emit(){
283   - return NULL;
  282 + llvm::Value * val;
  283 + llvm::LLVMContext * context = irgen.GetContext();
  284 + llvm::Function * func = irgen.GetFunction();
  285 + //find all cases and create a basic block for all of them
  286 + for (int i = 0; i < cases->NumElements(); i++){
  287 + //cases->Nth(i)->Emit();
  288 +
  289 + }
  290 + //Emit of expression
  291 + llvm::Value * exprVal=expr->Emit();
  292 + //create switch instruction
  293 + //val=llvm::SwitchInst::Create(Value *Value, BasicBlock *Default, unsigned NumCases, BasicBlock *InsertAtEnd);
  294 + //for each case 'addCase to switch stmt', EMIT for stmt in case, create terminator instruction
  295 +
284 296 }
285 297  
286 298 llvm::Value * SwitchLabel::Emit(){