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 }