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