Mercurial > projects > ldc
view gen/llvmhelpers.h @ 284:70c370e97944 trunk
[svn r305] Started support for custom class allocators/deallocators. Allocators with more than one argument still need to be fixed.
Removed the LLVM stacktrace code from mars.c.
Moved the LLVM based default target detection code from mars.c to llvmhelpers.cpp.
author | lindquist |
---|---|
date | Sat, 21 Jun 2008 02:48:53 +0200 |
parents | a95056b3c996 |
children | bef811104734 |
line wrap: on
line source
#ifndef LLVMDC_GEN_LLVMHELPERS_H #define LLVMDC_GEN_LLVMHELPERS_H // dynamic memory helpers LLValue* DtoNew(Type* newtype); void DtoDeleteMemory(LLValue* ptr); void DtoDeleteClass(LLValue* inst); void DtoDeleteInterface(LLValue* inst); void DtoDeleteArray(DValue* arr); // assertion generator void DtoAssert(Loc* loc, DValue* msg); // nested variable/class helpers LLValue* DtoNestedContext(FuncDeclaration* func); LLValue* DtoNestedVariable(VarDeclaration* vd); // basic operations void DtoAssign(DValue* lhs, DValue* rhs); // casts DValue* DtoCastInt(DValue* val, Type* to); DValue* DtoCastPtr(DValue* val, Type* to); DValue* DtoCastFloat(DValue* val, Type* to); DValue* DtoCast(DValue* val, Type* to); // is template instance check bool DtoIsTemplateInstance(Dsymbol* s); // generates lazy static initialization code for a global variable void DtoLazyStaticInit(bool istempl, LLValue* gvar, Initializer* init, Type* t); // these are all basically drivers for the codegeneration called by the main loop void DtoResolveDsymbol(Dsymbol* dsym); void DtoDeclareDsymbol(Dsymbol* dsym); void DtoDefineDsymbol(Dsymbol* dsym); void DtoConstInitDsymbol(Dsymbol* dsym); void DtoConstInitGlobal(VarDeclaration* vd); void DtoEmptyResolveList(); void DtoEmptyDeclareList(); void DtoEmptyConstInitList(); void DtoEmptyAllLists(); void DtoForceDeclareDsymbol(Dsymbol* dsym); void DtoForceConstInitDsymbol(Dsymbol* dsym); void DtoForceDefineDsymbol(Dsymbol* dsym); // initializer helpers LLConstant* DtoConstInitializer(Type* type, Initializer* init); LLConstant* DtoConstFieldInitializer(Type* type, Initializer* init); DValue* DtoInitializer(Initializer* init); // annotation generator void DtoAnnotation(const char* str); // getting typeinfo of type, base=true casts to object.TypeInfo LLConstant* DtoTypeInfoOf(Type* ty, bool base=true); // binary operations DValue* DtoBinAdd(DValue* lhs, DValue* rhs); DValue* DtoBinSub(DValue* lhs, DValue* rhs); DValue* DtoBinMul(DValue* lhs, DValue* rhs); DValue* DtoBinDiv(DValue* lhs, DValue* rhs); DValue* DtoBinRem(DValue* lhs, DValue* rhs); // target stuff void findDefaultTarget(); #endif