diff dmd/declaration.h @ 100:5071469303d4 trunk

[svn r104] TONS OF FIXES. Split up declaration, constant initializer gen and definition for globals, structs, classes and functions. Improved ClassInfo support (not complete), not in vtable yet. Fixed a bunch of forward reference problems. Much more. Major commit! :)
author lindquist
date Fri, 16 Nov 2007 08:21:47 +0100
parents 70d6113eeb8c
children 5b5194b25f33
line wrap: on
line diff
--- a/dmd/declaration.h	Thu Nov 15 00:24:44 2007 +0100
+++ b/dmd/declaration.h	Fri Nov 16 08:21:47 2007 +0100
@@ -24,6 +24,8 @@
 namespace llvm {
     class Value;
 }
+struct IRFunction;
+struct IRGlobal;
 
 struct Expression;
 struct Statement;
@@ -128,8 +130,6 @@
     Declaration *isDeclaration() { return this; }
 
     virtual void toObjFile();           // compile to .obj file
-    
-    bool llvmTouched;
 };
 
 /**************************************************************/
@@ -263,6 +263,8 @@
     int llvmFieldIndex;
     size_t llvmFieldIndexOffset;
     bool llvmNeedsStorage;
+    llvm::Constant* llvmConstInit;
+    IRGlobal* llvmIRGlobal;
 };
 
 /**************************************************************/
@@ -293,6 +295,8 @@
     void emitComment(Scope *sc);
 
     Symbol *toSymbol();
+
+    ClassInfoDeclaration* isClassInfoDeclaration() { return this; }
 };
 
 struct ModuleInfoDeclaration : VarDeclaration
@@ -558,6 +562,7 @@
     llvm::Value* llvmArgPtr;
     llvm::Constant* llvmDwarfSubProgram;
     bool llvmRunTimeHack;
+    IRFunction* llvmIRFunc;
 };
 
 struct FuncAliasDeclaration : FuncDeclaration