Mercurial > projects > ldc
diff gen/structs.cpp @ 137:ce7b81fb957f trunk
[svn r141] fixed more problems with classinfo
moved more IR state out of the AST classes
author | lindquist |
---|---|
date | Fri, 18 Jan 2008 16:42:16 +0100 |
parents | 0e28624814e8 |
children | 4c577c2b7229 |
line wrap: on
line diff
--- a/gen/structs.cpp Thu Jan 17 03:15:12 2008 +0100 +++ b/gen/structs.cpp Fri Jan 18 16:42:16 2008 +0100 @@ -99,7 +99,7 @@ } DtoConstInitStruct((StructDeclaration*)si->ad); - return si->ad->llvmUnion->getConst(inits); + return si->ad->irStruct->dunion->getConst(inits); } ////////////////////////////////////////////////////////////////////////////////////////// @@ -115,7 +115,7 @@ const llvm::Type* llt = getPtrToType(DtoType(t)); const llvm::Type* st = getPtrToType(DtoType(sd->type)); if (ptr->getType() != st) { - assert(sd->llvmHasUnions); + assert(sd->irStruct->hasUnions); ptr = gIR->ir->CreateBitCast(ptr, st, "tmp"); } @@ -179,7 +179,7 @@ TypeStruct* ts = (TypeStruct*)DtoDType(sd->type); IrStruct* irstruct = new IrStruct(ts); - sd->llvmIrStruct = irstruct; + sd->irStruct = irstruct; gIR->structs.push_back(irstruct); // fields @@ -252,14 +252,14 @@ fieldpad += s - prevsize; prevsize = s; } - sd->llvmHasUnions = true; + sd->irStruct->hasUnions = true; i->second.var->irField->index = idx; } // intersecting offset? else if (i->first < (lastoffset + prevsize)) { size_t s = getABITypeSize(i->second.type); assert((i->first + s) <= (lastoffset + prevsize)); // this holds because all types are aligned to their size - sd->llvmHasUnions = true; + sd->irStruct->hasUnions = true; i->second.var->irField->index = idx; i->second.var->irField->indexOffset = (i->first - lastoffset) / s; } @@ -334,7 +334,7 @@ llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::ExternalLinkage; llvm::GlobalVariable* initvar = new llvm::GlobalVariable(ts->llvmType->get(), true, _linkage, NULL, initname, gIR->module); - sd->llvmInit = initvar; + sd->irStruct->init = initvar; gIR->constInitList.push_back(sd); if (sd->getModule() == gIR->dmodule) @@ -351,7 +351,7 @@ Logger::println("DtoConstInitStruct(%s): %s", sd->toChars(), sd->loc.toChars()); LOG_SCOPE; - IrStruct* irstruct = sd->llvmIrStruct; + IrStruct* irstruct = sd->irStruct; gIR->structs.push_back(irstruct); // make sure each offset knows its default initializer @@ -383,7 +383,7 @@ } // generate the union mapper - sd->llvmUnion = new DUnion; // uses gIR->topstruct() + sd->irStruct->dunion = new DUnion; // uses gIR->topstruct() // always generate the constant initalizer if (!sd->zeroInit) { @@ -399,11 +399,11 @@ } Logger::cout() << "Initializer printed" << '\n'; #endif - sd->llvmConstInit = llvm::ConstantStruct::get(structtype,fieldinits_ll); + sd->irStruct->constInit = llvm::ConstantStruct::get(structtype,fieldinits_ll); } else { Logger::println("Zero initialized"); - sd->llvmConstInit = llvm::ConstantAggregateZero::get(structtype); + sd->irStruct->constInit = llvm::ConstantAggregateZero::get(structtype); } gIR->structs.pop_back(); @@ -425,7 +425,7 @@ assert(sd->type->ty == Tstruct); TypeStruct* ts = (TypeStruct*)sd->type; - sd->llvmInit->setInitializer(sd->llvmConstInit); + sd->irStruct->init->setInitializer(sd->irStruct->constInit); sd->llvmDModule = gIR->dmodule; }