comparison dmd/aggregate.h @ 54:28e99b04a132 trunk

[svn r58] Fixed cond expression resulting in a non-basic type. Fixed identity expression for dynamic arrays. Revamped the system to keep track of lvalues and rvalues and their relations. Typedef declaration now generate the custom typeinfo. Other bugfixes.
author lindquist
date Wed, 24 Oct 2007 01:37:34 +0200
parents 3cfcb944304e
children d7e764e62462
comparison
equal deleted inserted replaced
53:06ccc817acd4 54:28e99b04a132
38 namespace llvm 38 namespace llvm
39 { 39 {
40 class Type; 40 class Type;
41 class Value; 41 class Value;
42 class Constant; 42 class Constant;
43 class ConstantStruct;
43 } 44 }
44 45
45 struct AggregateDeclaration : ScopeDsymbol 46 struct AggregateDeclaration : ScopeDsymbol
46 { 47 {
47 Type *type; 48 Type *type;
96 Symbol *toInitializer(); 97 Symbol *toInitializer();
97 98
98 bool llvmInProgress; 99 bool llvmInProgress;
99 llvm::Type* llvmType; 100 llvm::Type* llvmType;
100 llvm::Value* llvmVtbl; 101 llvm::Value* llvmVtbl;
102 llvm::ConstantStruct* llvmConstVtbl;
101 llvm::Constant* llvmInitZ; 103 llvm::Constant* llvmInitZ;
102 virtual void offsetToIndex(Type* t, unsigned os, std::vector<unsigned>& result); // converts a DMD field offsets to LLVM struct index vector 104 virtual void offsetToIndex(Type* t, unsigned os, std::vector<unsigned>& result); // converts a DMD field offsets to LLVM struct index vector
103 105
104 AggregateDeclaration *isAggregateDeclaration() { return this; } 106 AggregateDeclaration *isAggregateDeclaration() { return this; }
105 }; 107 };