view ir/irtypefunction.h @ 1482:d9c5f5a43403

Run `semantic3` on imported modules, and emit new symbols with `available_externally` linkage. This allows the inliner to inline functions from other modules while telling the code generator to ignore those functions (treat them as declarations) Still generates a few extra `TypeInfo`s and strings... Disabled when generating debug info because I don't really understand it, and it doesn't like this.
author Frits van Bommel <fvbommel wxs.nl>
date Sun, 07 Jun 2009 16:00:13 +0200
parents 46f6365a50d7
children
line wrap: on
line source

#ifndef __LDC_IR_IRTYPEFUNCTION_H__
#define __LDC_IR_IRTYPEFUNCTION_H__

#include "ir/irtype.h"

class IrFuncTy;

///
class IrTypeFunction : public IrType
{
public:
    ///
    IrTypeFunction(Type* dt);

    ///
    IrTypeFunction* isFunction()  { return this; }

    ///
    const llvm::Type* buildType();

    IrFuncTy* fty() { return irfty; }

protected:
    ///
    IrFuncTy* irfty;
};

///
class IrTypeDelegate : public IrType
{
public:
    ///
    IrTypeDelegate(Type* dt);

    ///
    IrTypeDelegate* isDelegate()    { return this; }

    ///
    const llvm::Type* buildType();
};

#endif