Mercurial > projects > ldc
comparison ir/irfunction.h @ 136:0e28624814e8 trunk
[svn r140] did a lot of the work towards being able to pass multiple modules on the command line. not complete yet though
author | lindquist |
---|---|
date | Thu, 17 Jan 2008 03:15:12 +0100 |
parents | |
children | 8f704cb9969b |
comparison
equal
deleted
inserted
replaced
135:176bd52b3cf5 | 136:0e28624814e8 |
---|---|
1 #ifndef LLVMDC_IR_IRFUNCTION_H | |
2 #define LLVMDC_IR_IRFUNCTION_H | |
3 | |
4 #include "ir/ir.h" | |
5 | |
6 #include <vector> | |
7 | |
8 // represents a finally block | |
9 struct IrFinally | |
10 { | |
11 llvm::BasicBlock* bb; | |
12 llvm::BasicBlock* retbb; | |
13 | |
14 IrFinally(); | |
15 IrFinally(llvm::BasicBlock* b, llvm::BasicBlock* rb); | |
16 }; | |
17 | |
18 // represents a function | |
19 struct IrFunction : IrBase | |
20 { | |
21 llvm::Function* func; | |
22 llvm::Instruction* allocapoint; | |
23 FuncDeclaration* decl; | |
24 TypeFunction* type; | |
25 | |
26 // finally blocks | |
27 typedef std::vector<IrFinally> FinallyVec; | |
28 FinallyVec finallys; | |
29 llvm::Value* finallyretval; | |
30 | |
31 bool queued; | |
32 bool defined; | |
33 llvm::Value* retArg; | |
34 llvm::Value* thisVar; | |
35 llvm::Value* nestedVar; | |
36 llvm::Value* _arguments; | |
37 llvm::Value* _argptr; | |
38 llvm::Constant* dwarfSubProg; | |
39 | |
40 IrFunction(FuncDeclaration* fd); | |
41 virtual ~IrFunction(); | |
42 }; | |
43 | |
44 #endif |