Commit 2d64c72aa5b20dad396459b46c39f7c3eb4ff251
1 parent
d9c354aa39
Exists in
master
well
Showing 3 changed files with 29 additions and 1 deletions Side-by-side Diff
ast_stmt.cc
View file @
2d64c72
... | ... | @@ -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 | } |
irgen.cc
View file @
2d64c72
... | ... | @@ -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"; |
irgen.h
View file @
2d64c72
... | ... | @@ -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; |