Mercurial > projects > ldc
comparison gen/toir.cpp @ 1529:ad7f2f1862d6
Adjust LDC to work with the LLVMContext LLVM changes.
This means we now require a fairly new LLVM revision. I use 75234.
author | Christian Kamm <kamm incasoftware de> |
---|---|
date | Fri, 10 Jul 2009 21:30:02 +0200 |
parents | 8a5570ddad25 |
children | 8ca25bd765a3 |
comparison
equal
deleted
inserted
replaced
1528:15f1707721fa | 1529:ad7f2f1862d6 |
---|---|
428 assert(0); | 428 assert(0); |
429 | 429 |
430 llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::InternalLinkage; | 430 llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::InternalLinkage; |
431 if (Logger::enabled()) | 431 if (Logger::enabled()) |
432 Logger::cout() << "type: " << *at << "\ninit: " << *_init << '\n'; | 432 Logger::cout() << "type: " << *at << "\ninit: " << *_init << '\n'; |
433 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(at,true,_linkage,_init,".str",gIR->module); | 433 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(*gIR->module,at,true,_linkage,_init,".str"); |
434 | 434 |
435 llvm::ConstantInt* zero = llvm::ConstantInt::get(LLType::Int32Ty, 0, false); | 435 llvm::ConstantInt* zero = llvm::ConstantInt::get(LLType::Int32Ty, 0, false); |
436 LLConstant* idxs[2] = { zero, zero }; | 436 LLConstant* idxs[2] = { zero, zero }; |
437 LLConstant* arrptr = llvm::ConstantExpr::getGetElementPtr(gvar,idxs,2); | 437 LLConstant* arrptr = llvm::ConstantExpr::getGetElementPtr(gvar,idxs,2); |
438 | 438 |
504 { | 504 { |
505 return _init; | 505 return _init; |
506 } | 506 } |
507 | 507 |
508 llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::InternalLinkage; | 508 llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::InternalLinkage; |
509 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(_init->getType(),true,_linkage,_init,".str",gIR->module); | 509 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(*gIR->module,_init->getType(),true,_linkage,_init,".str"); |
510 | 510 |
511 llvm::ConstantInt* zero = llvm::ConstantInt::get(LLType::Int32Ty, 0, false); | 511 llvm::ConstantInt* zero = llvm::ConstantInt::get(LLType::Int32Ty, 0, false); |
512 LLConstant* idxs[2] = { zero, zero }; | 512 LLConstant* idxs[2] = { zero, zero }; |
513 LLConstant* arrptr = llvm::ConstantExpr::getGetElementPtr(gvar,idxs,2); | 513 LLConstant* arrptr = llvm::ConstantExpr::getGetElementPtr(gvar,idxs,2); |
514 | 514 |
2383 return initval; | 2383 return initval; |
2384 | 2384 |
2385 // for dynamic arrays we need to put the initializer in a global, and build a constant dynamic array reference with the .ptr field pointing into this global | 2385 // for dynamic arrays we need to put the initializer in a global, and build a constant dynamic array reference with the .ptr field pointing into this global |
2386 // Important: don't make the global constant, since this const initializer might | 2386 // Important: don't make the global constant, since this const initializer might |
2387 // be used as an initializer for a static T[] - where modifying contents is allowed. | 2387 // be used as an initializer for a static T[] - where modifying contents is allowed. |
2388 LLConstant* globalstore = new LLGlobalVariable(arrtype, false, LLGlobalValue::InternalLinkage, initval, ".dynarrayStorage", p->module); | 2388 LLConstant* globalstore = new LLGlobalVariable(*gIR->module, arrtype, false, LLGlobalValue::InternalLinkage, initval, ".dynarrayStorage"); |
2389 LLConstant* idxs[2] = { DtoConstUint(0), DtoConstUint(0) }; | 2389 LLConstant* idxs[2] = { DtoConstUint(0), DtoConstUint(0) }; |
2390 LLConstant* globalstorePtr = llvm::ConstantExpr::getGetElementPtr(globalstore, idxs, 2); | 2390 LLConstant* globalstorePtr = llvm::ConstantExpr::getGetElementPtr(globalstore, idxs, 2); |
2391 | 2391 |
2392 return DtoConstSlice(DtoConstSize_t(elements->dim), globalstorePtr); | 2392 return DtoConstSlice(DtoConstSize_t(elements->dim), globalstorePtr); |
2393 } | 2393 } |