view ir/irforw.h @ 948:780530d1cad3

Revert templates to old behavior. While emitting a template instantiation only once is good for compile times and binary sizes, it doesn't work with linkonce linkage as inlined function bodies could be discarded. Since we don't want to inhibit inlining, templates are reverted to the previous behavior, where an instantiation is emitted for each module using it. In the future, a custom inlining pass may allow us to switch back to common/weak linkage and reenable smart template instance emission.
author Christian Kamm <kamm incasoftware de>
date Sun, 08 Feb 2009 21:44:46 +0100
parents eef8ac26c66c
children
line wrap: on
line source

#ifndef LDC_IR_IRFORW_H
#define LDC_IR_IRFORW_H

// dmd forward declarations
struct Module;
struct Dsymbol;
struct Declaration;
struct VarDeclaration;
struct FuncDeclaration;
struct AggregateDeclaration;
struct StructDeclaration;
struct ClassDeclaration;
struct InterfaceDeclaration;
struct Expression;
struct BaseClass;
struct Array;
struct Argument;

struct Type;
struct TypeStruct;
struct TypeClass;
struct TypeEnum;
struct TypeArray;
struct TypeFunction;

// llvm forward declarations
namespace llvm
{
    class Value;
    class GlobalValue;
    class GlobalVariable;
    class Function;
    class Constant;
    class ConstantStruct;
    class ConstantArray;
    class TargetData;
    class Type;
    class StructType;
    class ArrayType;
    class PointerType;
    class BasicBlock;
    class Instruction;
}

#endif