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