mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-02-20 05:33:13 +01:00
[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:
44
ir/irfunction.h
Normal file
44
ir/irfunction.h
Normal 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
|
||||
Reference in New Issue
Block a user