Mercurial > projects > ldc
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