diff gen/typinf.cpp @ 761:fa306ca8843b

Applied fvbommel's patch from #112 Added missing TypeInfoInvariant codegen for D2
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 12 Nov 2008 02:30:28 +0100
parents f04dde6e882c
children 9a9f403ab399
line wrap: on
line diff
--- a/gen/typinf.cpp	Wed Nov 12 00:19:18 2008 +0100
+++ b/gen/typinf.cpp	Wed Nov 12 02:30:28 2008 +0100
@@ -1229,45 +1229,32 @@
     assert(0);
 }
 
-// void TypeInfoConstDeclaration::toDt(dt_t **pdt)
-// {
-//     //printf("TypeInfoConstDeclaration::toDt() %s\n", toChars());
-//     dtxoff(pdt, Type::typeinfoconst->toVtblSymbol(), 0, TYnptr); // vtbl for TypeInfo_Const
-//     dtdword(pdt, 0);                // monitor
-//     Type *tm = tinfo->mutableOf();
-//     tm = tm->merge();
-//     tm->getTypeInfo(NULL);
-//     dtxoff(pdt, tm->vtinfo->toSymbol(), 0, TYnptr);
-// }
-
 ///////////////////////////////////////////////////////////
 
 /* ========================================================================= */
 
-void TypeInfoInvariantDeclaration::toDt(dt_t **pdt)
-{
-    assert(0 && "TypeInfoInvariantDeclaration::toDt");
-}
-
 void TypeInfoInvariantDeclaration::llvmDeclare()
 {
-    assert(0 && "TypeInfoInvariantDeclaration::llvmDeclare");
+    Logger::println("TypeInfoInvariantDeclaration::toDt() %s", toChars());
+    LOG_SCOPE;
+
+    LLVM_D_Declare_TypeInfoBase(this, Type::typeinfoinvariant);
 }
 
 void TypeInfoInvariantDeclaration::llvmDefine()
 {
-    assert(0 && "TypeInfoInvariantDeclaration::llvmDeclare");
+    Logger::println("TypeInfoInvariantDeclaration::toDt() %s", toChars());
+    LOG_SCOPE;
+
+    Type *tm = tinfo->mutableOf();
+    tm = tm->merge();
+
+    LLVM_D_Define_TypeInfoBase(tm, this, Type::typeinfoinvariant);
 }
 
-// void TypeInfoInvariantDeclaration::toDt(dt_t **pdt)
-// {
-//     //printf("TypeInfoInvariantDeclaration::toDt() %s\n", toChars());
-//     dtxoff(pdt, Type::typeinfoinvariant->toVtblSymbol(), 0, TYnptr); // vtbl for TypeInfo_Invariant
-//     dtdword(pdt, 0);                // monitor
-//     Type *tm = tinfo->mutableOf();
-//     tm = tm->merge();
-//     tm->getTypeInfo(NULL);
-//     dtxoff(pdt, tm->vtinfo->toSymbol(), 0, TYnptr);
-// }
+void TypeInfoInvariantDeclaration::toDt(dt_t **pdt)
+{
+    assert(0);
+}
 
 #endif
\ No newline at end of file