Mercurial > projects > ldc
diff gen/llvmhelpers.h @ 244:a95056b3c996 trunk
[svn r261] Fixed debug info for integer and floating local variables, can now be inspected in GDB.
Did a lot of smaller cleans up here and there.
Replaced more llvm::Foo with LLFoo for common stuff.
Split up tollvm.cpp.
author | lindquist |
---|---|
date | Mon, 09 Jun 2008 09:37:08 +0200 |
parents | |
children | 70c370e97944 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gen/llvmhelpers.h Mon Jun 09 09:37:08 2008 +0200 @@ -0,0 +1,65 @@ +#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); + +#endif