Commit 2d64c72aa5b20dad396459b46c39f7c3eb4ff251

Authored by Austin Sun
1 parent d9c354aa39
Exists in master

well

Showing 3 changed files with 29 additions and 1 deletions Side-by-side Diff

... ... @@ -321,6 +321,7 @@
321 321 }
322 322  
323 323 llvm::Value * SwitchStmt::Emit(){
  324 + /*
324 325 llvm::Value * val;
325 326 llvm::LLVMContext * context = irgen.GetContext();
326 327 llvm::Function * func = irgen.GetFunction();
... ... @@ -341,6 +342,7 @@
341 342 cases->Nth(i)->Emit();
342 343 irgen.GetBasicBlock()->getTerminator();
343 344 }
  345 + */
344 346 return NULL;
345 347  
346 348 }
... ... @@ -11,7 +11,9 @@
11 11 context(NULL),
12 12 module(NULL),
13 13 currentFunc(NULL),
14   - currentBB(NULL)
  14 + currentBB(NULL),
  15 + currentFooter(NULL),
  16 + currentHeader(NULL)
15 17 {
16 18 }
17 19  
... ... @@ -58,6 +60,22 @@
58 60 llvm::Type *IRGenerator::GetFloatType() const {
59 61 llvm::Type *ty = llvm::Type::getFloatTy(*context);
60 62 return ty;
  63 +}
  64 +
  65 +void IRGenerator::SetFootBlock(llvm::BasicBlock *bb) {
  66 + currentFooter = bb;
  67 +}
  68 +
  69 +llvm::BasicBlock *IRGenerator::GetFootBlock() const {
  70 + return currentFooter;
  71 +}
  72 +
  73 +void IRGenerator::SetHeaderBlock(llvm::BasicBlock *bb){
  74 + currentHeader = bb;
  75 +}
  76 +
  77 +llvm::BasicBlock *IRGenerator::GetHeaderBlock() const {
  78 + return currentHeader;
61 79 }
62 80  
63 81 const char *IRGenerator::TargetLayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128";
... ... @@ -32,6 +32,12 @@
32 32 llvm::BasicBlock *GetBasicBlock() const;
33 33 void SetBasicBlock(llvm::BasicBlock *bb);
34 34  
  35 + llvm::BasicBlock *GetFooterBlock() const;
  36 + void SetFooterBlock(llvm::BasicBlock *bb);
  37 +
  38 + llvm::BasicBlock *GetHeaderBlock() const;
  39 + void SetHeaderBlock(llvm::BasicBlock *bb);
  40 +
35 41 llvm::Type *GetIntType() const;
36 42 llvm::Type *GetBoolType() const;
37 43 llvm::Type *GetFloatType() const;
... ... @@ -43,6 +49,8 @@
43 49 // track which function or basic block is active
44 50 llvm::Function *currentFunc;
45 51 llvm::BasicBlock *currentBB;
  52 + llvm::BasicBlock *currentFooter;
  53 + llvm::BasicBlock *currentHeader;
46 54  
47 55 static const char *TargetTriple;
48 56 static const char *TargetLayout;