diff gen/dvalue.h @ 213:7816aafeea3c trunk

[svn r229] Updated the object.d implementation to the latest Tango. Fixed a bunch of the built-in typeinfos for arrays, they did not inherit TypeInfo_Array. Applied patch to tango/text/convert/Layout.d by fvbommel, closes #47 . Cleaned up some type code. Replaced uses of llvm::Type with LLType (a typedef), same for Value and Constant. Fixed a few cases where typeinfo for user structs could be emitted multiple times, seems to still be some cases of this :/
author lindquist
date Fri, 30 May 2008 19:32:04 +0200
parents 336ec4f4bbb3
children 20446d22f832
line wrap: on
line diff
--- a/gen/dvalue.h	Tue May 27 22:14:24 2008 +0200
+++ b/gen/dvalue.h	Fri May 30 19:32:04 2008 +0200
@@ -39,8 +39,8 @@
 {
     virtual Type* getType() = 0;
 
-    virtual llvm::Value* getLVal() { assert(0); return 0; }
-    virtual llvm::Value* getRVal() { assert(0); return 0; }
+    virtual LLValue* getLVal() { assert(0); return 0; }
+    virtual LLValue* getRVal() { assert(0); return 0; }
 
     virtual DImValue* isIm() { return NULL; }
     virtual DConstValue* isConst() { return NULL; }
@@ -66,12 +66,12 @@
 struct DImValue : DValue
 {
     Type* type;
-    llvm::Value* val;
+    LLValue* val;
     bool inplace;
 
-    DImValue(Type* t, llvm::Value* v, bool in_place = false) { type = t; val = v; inplace = in_place; }
+    DImValue(Type* t, LLValue* v, bool in_place = false) { type = t; val = v; inplace = in_place; }
 
-    virtual llvm::Value* getRVal() { assert(val); return val; }
+    virtual LLValue* getRVal() { assert(val); return val; }
 
     virtual Type* getType() { assert(type); return type; }
     virtual DImValue* isIm() { return this; }
@@ -83,11 +83,11 @@
 struct DConstValue : DValue
 {
     Type* type;
-    llvm::Constant* c;
+    LLConstant* c;
 
-    DConstValue(Type* t, llvm::Constant* con) { type = t; c = con; }
+    DConstValue(Type* t, LLConstant* con) { type = t; c = con; }
 
-    virtual llvm::Value* getRVal();
+    virtual LLValue* getRVal();
 
     virtual Type* getType() { assert(type); return type; }
     virtual DConstValue* isConst() { return this; }
@@ -96,7 +96,7 @@
 // null d-value
 struct DNullValue : DConstValue
 {
-    DNullValue(Type* t, llvm::Constant* con) : DConstValue(t,con) {}
+    DNullValue(Type* t, LLConstant* con) : DConstValue(t,con) {}
     virtual DNullValue* isNull() { return this; }
 };
 
@@ -105,16 +105,16 @@
 {
     Type* type;
     VarDeclaration* var;
-    llvm::Value* val;
-    llvm::Value* rval;
+    LLValue* val;
+    LLValue* rval;
     bool lval;
 
-    DVarValue(VarDeclaration* vd, llvm::Value* llvmValue, bool lvalue);
-    DVarValue(Type* vd, llvm::Value* lv, llvm::Value* rv);
-    DVarValue(Type* t, llvm::Value* llvmValue, bool lvalue);
+    DVarValue(VarDeclaration* vd, LLValue* llvmValue, bool lvalue);
+    DVarValue(Type* vd, LLValue* lv, LLValue* rv);
+    DVarValue(Type* t, LLValue* llvmValue, bool lvalue);
 
-    virtual llvm::Value* getLVal();
-    virtual llvm::Value* getRVal();
+    virtual LLValue* getLVal();
+    virtual LLValue* getRVal();
 
     virtual Type* getType() { assert(type); return type; }
     virtual DVarValue* isVar() { return this; }
@@ -123,21 +123,21 @@
 // field d-value
 struct DFieldValue : DVarValue
 {
-    DFieldValue(Type* t, llvm::Value* llvmValue, bool l) : DVarValue(t, llvmValue, l) {}
+    DFieldValue(Type* t, LLValue* llvmValue, bool l) : DVarValue(t, llvmValue, l) {}
     virtual DFieldValue* isField() { return this; }
 };
 
 // this d-value
 struct DThisValue : DVarValue
 {
-    DThisValue(VarDeclaration* vd, llvm::Value* llvmValue) : DVarValue(vd, llvmValue, true) {}
+    DThisValue(VarDeclaration* vd, LLValue* llvmValue) : DVarValue(vd, llvmValue, true) {}
     virtual DThisValue* isThis() { return this; }
 };
 
 // array length d-value
 struct DArrayLenValue : DVarValue
 {
-    DArrayLenValue(Type* t, llvm::Value* llvmValue) : DVarValue(t, llvmValue, true) {}
+    DArrayLenValue(Type* t, LLValue* llvmValue) : DVarValue(t, llvmValue, true) {}
     virtual DArrayLenValue* isArrayLen() { return this; }
 };
 
@@ -145,10 +145,10 @@
 struct DSliceValue : DValue
 {
     Type* type;
-    llvm::Value* len;
-    llvm::Value* ptr;
+    LLValue* len;
+    LLValue* ptr;
 
-    DSliceValue(Type* t, llvm::Value* l, llvm::Value* p) { type=t; ptr=p; len=l; }
+    DSliceValue(Type* t, LLValue* l, LLValue* p) { type=t; ptr=p; len=l; }
 
     virtual Type* getType() { assert(type); return type; }
     virtual DSliceValue* isSlice() { return this; }
@@ -159,14 +159,14 @@
 {
     Type* type;
     FuncDeclaration* func;
-    llvm::Value* val;
-    llvm::Value* vthis;
+    LLValue* val;
+    LLValue* vthis;
     unsigned cc;
 
-    DFuncValue(FuncDeclaration* fd, llvm::Value* v, llvm::Value* vt = 0);
+    DFuncValue(FuncDeclaration* fd, LLValue* v, LLValue* vt = 0);
 
-    virtual llvm::Value* getLVal();
-    virtual llvm::Value* getRVal();
+    virtual LLValue* getLVal();
+    virtual LLValue* getRVal();
 
     virtual Type* getType() { assert(type); return type; }
     virtual DFuncValue* isFunc() { return this; }
@@ -176,19 +176,19 @@
 struct DLRValue : DValue
 {
     Type* ltype;
-    llvm::Value* lval;
+    LLValue* lval;
     Type* rtype;
-    llvm::Value* rval;
+    LLValue* rval;
 
-    DLRValue(Type* lt, llvm::Value* l, Type* rt, llvm::Value* r) {
+    DLRValue(Type* lt, LLValue* l, Type* rt, LLValue* r) {
         ltype = lt;
         lval = l;
         rtype = rt;
         rval = r;
     }
 
-    virtual llvm::Value* getLVal() { assert(lval); return lval; }
-    virtual llvm::Value* getRVal() { assert(rval); return rval; }
+    virtual LLValue* getLVal() { assert(lval); return lval; }
+    virtual LLValue* getRVal() { assert(rval); return rval; }
 
     Type* getLType() { return ltype; }
     Type* getRType() { return rtype; }
@@ -200,10 +200,10 @@
 struct DComplexValue : DValue
 {
     Type* type;
-    llvm::Value* re;
-    llvm::Value* im;
+    LLValue* re;
+    LLValue* im;
 
-    DComplexValue(Type* t, llvm::Value* r, llvm::Value* i) {
+    DComplexValue(Type* t, LLValue* r, LLValue* i) {
         type = t;
         re = r;
         im = i;