Commit 2d15c0427d8fb48637a691670a9d37b2fe49222e

Authored by Austin Sun
1 parent 97f140d1e4
Exists in master

well

Showing 1 changed file with 7 additions and 4 deletions Side-by-side Diff

... ... @@ -240,7 +240,6 @@
240 240 llvm::BranchInst::Create(headBlock, irgen.GetBasicBlock()); // given in the slides
241 241 }
242 242  
243   -
244 243 irgen.SetBasicBlock(footBlock);
245 244 popScope();
246 245 return NULL;
... ... @@ -294,7 +293,7 @@
294 293 llvm::LLVMContext * context = irgen.GetContext();
295 294 llvm::Function * func = irgen.GetFunction();
296 295 llvm::BasicBlock * breakBlock = llvm::BasicBlock::Create(*context, "breakBlock", func);
297   - val=llvm::BranchInst::Create (breakBlock, irgen.GetBasicBlock());
  296 + val=llvm::BranchInst::Create (breakBlock, irgen.GetFooterBlock());
298 297 return val;
299 298 }
300 299  
... ... @@ -303,7 +302,7 @@
303 302 llvm::LLVMContext * context = irgen.GetContext();
304 303 llvm::Function * func = irgen.GetFunction();
305 304 llvm::BasicBlock * contBlock = llvm::BasicBlock::Create(*context, "contBlock", func);
306   - val=llvm::BranchInst::Create (contBlock, irgen.GetBasicBlock());
  305 + val=llvm::BranchInst::Create (contBlock, irgen.GetHeaderBlock());
307 306 return val;
308 307 }
309 308  
... ... @@ -319,6 +318,7 @@
319 318 val = llvm::ReturnInst::Create(*context, irgen.GetBasicBlock());
320 319 return val;
321 320 }
  321 +//stack for both
322 322  
323 323 llvm::Value * SwitchStmt::Emit(){
324 324 /*
325 325  
326 326  
... ... @@ -333,15 +333,18 @@
333 333 //Emit of expression
334 334 llvm::Value * exprVal=expr->Emit();
335 335  
336   - //create switch instruction
  336 + //create switch instruction pass in default
337 337 val=llvm::SwitchInst::Create(exprVal, blockArr[cases->NumElements()], cases->NumElements(), irgen.GetBasicBlock());
338 338  
339 339 //for each case 'addCase to switch stmt', EMIT for stmt in case, create terminator instruction
340 340 for(int i=0; i<cases->NumElements();i++){
341 341 //add addCase to switch stmt
  342 + //addcase to val method
  343 + val.AddCase (i, blockArr[i]);
342 344 cases->Nth(i)->Emit();
343 345 irgen.GetBasicBlock()->getTerminator();
344 346 }
  347 + return val;
345 348 */
346 349 return NULL;
347 350 }