view ir/irfunction.h @ 139:0ab29b838084 trunk

[svn r143] Fixed: a few bugs in debug information, still only line info, but should be correct files now :) Fixed: tango.io.Console seems to be working now.
author lindquist
date Tue, 22 Jan 2008 00:01:16 +0100
parents 0e28624814e8
children 8f704cb9969b
line wrap: on
line source

#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