[svn r140] did a lot of the work towards being able to pass multiple modules on the command line. not complete yet though

This commit is contained in:
Tomas Lindquist Olsen
2008-01-17 03:15:12 +01:00
parent 4f977e3cec
commit 5652546986
40 changed files with 900 additions and 548 deletions

44
ir/irfunction.h Normal file
View File

@@ -0,0 +1,44 @@
#ifndef LLVMDC_IR_IRFUNCTION_H
#define LLVMDC_IR_IRFUNCTION_H
#include "ir/ir.h"
#include <vector>
// represents a finally block
struct IrFinally
{
llvm::BasicBlock* bb;
llvm::BasicBlock* retbb;
IrFinally();
IrFinally(llvm::BasicBlock* b, llvm::BasicBlock* rb);
};
// represents a function
struct IrFunction : IrBase
{
llvm::Function* func;
llvm::Instruction* allocapoint;
FuncDeclaration* decl;
TypeFunction* type;
// finally blocks
typedef std::vector<IrFinally> FinallyVec;
FinallyVec finallys;
llvm::Value* finallyretval;
bool queued;
bool defined;
llvm::Value* retArg;
llvm::Value* thisVar;
llvm::Value* nestedVar;
llvm::Value* _arguments;
llvm::Value* _argptr;
llvm::Constant* dwarfSubProg;
IrFunction(FuncDeclaration* fd);
virtual ~IrFunction();
};
#endif