Mercurial > projects > ldc
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 ////////////////////////////////////////////////////////////////////////////////////////// |