comparison gen/structs.cpp @ 121:9c79b61fb638 trunk

[svn r125] Renamed/moved a few backend member inside DMD structures for consistency. Unit tests are now implemented.
author lindquist
date Tue, 27 Nov 2007 03:09:36 +0100
parents 27b9f749d9fe
children 1700239cab2e
comparison
equal deleted inserted replaced
120:5ce8ab11e75a 121:9c79b61fb638
302 initname.append(sd->mangle()); 302 initname.append(sd->mangle());
303 initname.append("6__initZ"); 303 initname.append("6__initZ");
304 304
305 llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::ExternalLinkage; 305 llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::ExternalLinkage;
306 llvm::GlobalVariable* initvar = new llvm::GlobalVariable(ts->llvmType->get(), true, _linkage, NULL, initname, gIR->module); 306 llvm::GlobalVariable* initvar = new llvm::GlobalVariable(ts->llvmType->get(), true, _linkage, NULL, initname, gIR->module);
307 ts->llvmInit = initvar; 307 sd->llvmInit = initvar;
308 308
309 gIR->constInitList.push_back(sd); 309 gIR->constInitList.push_back(sd);
310 if (sd->getModule() == gIR->dmodule) 310 if (sd->getModule() == gIR->dmodule)
311 gIR->defineList.push_back(sd); 311 gIR->defineList.push_back(sd);
312 } 312 }
367 Logger::cout() << "Value:" << '\n'; 367 Logger::cout() << "Value:" << '\n';
368 Logger::cout() << *fieldinits_ll[k] << '\n'; 368 Logger::cout() << *fieldinits_ll[k] << '\n';
369 } 369 }
370 Logger::cout() << "Initializer printed" << '\n'; 370 Logger::cout() << "Initializer printed" << '\n';
371 #endif 371 #endif
372 sd->llvmInitZ = llvm::ConstantStruct::get(structtype,fieldinits_ll); 372 sd->llvmConstInit = llvm::ConstantStruct::get(structtype,fieldinits_ll);
373 } 373 }
374 else { 374 else {
375 Logger::println("Zero initialized"); 375 Logger::println("Zero initialized");
376 sd->llvmInitZ = llvm::ConstantAggregateZero::get(structtype); 376 sd->llvmConstInit = llvm::ConstantAggregateZero::get(structtype);
377 } 377 }
378 378
379 gIR->structs.pop_back(); 379 gIR->structs.pop_back();
380 380
381 // emit typeinfo 381 // emit typeinfo
393 Logger::println("DtoDefineStruct(%s)", sd->toChars()); 393 Logger::println("DtoDefineStruct(%s)", sd->toChars());
394 LOG_SCOPE; 394 LOG_SCOPE;
395 395
396 assert(sd->type->ty == Tstruct); 396 assert(sd->type->ty == Tstruct);
397 TypeStruct* ts = (TypeStruct*)sd->type; 397 TypeStruct* ts = (TypeStruct*)sd->type;
398 ts->llvmInit->setInitializer(sd->llvmInitZ); 398 sd->llvmInit->setInitializer(sd->llvmConstInit);
399 399
400 sd->llvmDModule = gIR->dmodule; 400 sd->llvmDModule = gIR->dmodule;
401 } 401 }
402 402
403 ////////////////////////////////////////////////////////////////////////////////////////// 403 //////////////////////////////////////////////////////////////////////////////////////////