comparison gen/tollvm.cpp @ 1545:7fcb72d518f6

More factory methods moved to LLVMContext
author Benjamin Kramer <benny.kra@gmail.com>
date Wed, 15 Jul 2009 18:09:41 +0200
parents 6364e09628fd
children 259b031f3d22
comparison
equal deleted inserted replaced
1544:8863cf7236e6 1545:7fcb72d518f6
530 530
531 ////////////////////////////////////////////////////////////////////////////////////////// 531 //////////////////////////////////////////////////////////////////////////////////////////
532 532
533 llvm::ConstantInt* DtoConstSize_t(uint64_t i) 533 llvm::ConstantInt* DtoConstSize_t(uint64_t i)
534 { 534 {
535 return llvm::ConstantInt::get(DtoSize_t(), i, false); 535 return gIR->context().getConstantInt(DtoSize_t(), i, false);
536 } 536 }
537 llvm::ConstantInt* DtoConstUint(unsigned i) 537 llvm::ConstantInt* DtoConstUint(unsigned i)
538 { 538 {
539 return llvm::ConstantInt::get(LLType::Int32Ty, i, false); 539 return gIR->context().getConstantInt(LLType::Int32Ty, i, false);
540 } 540 }
541 llvm::ConstantInt* DtoConstInt(int i) 541 llvm::ConstantInt* DtoConstInt(int i)
542 { 542 {
543 return llvm::ConstantInt::get(LLType::Int32Ty, i, true); 543 return gIR->context().getConstantInt(LLType::Int32Ty, i, true);
544 } 544 }
545 LLConstant* DtoConstBool(bool b) 545 LLConstant* DtoConstBool(bool b)
546 { 546 {
547 return llvm::ConstantInt::get(LLType::Int1Ty, b, false); 547 return gIR->context().getConstantInt(LLType::Int1Ty, b, false);
548 } 548 }
549 llvm::ConstantInt* DtoConstUbyte(unsigned char i) 549 llvm::ConstantInt* DtoConstUbyte(unsigned char i)
550 { 550 {
551 return llvm::ConstantInt::get(LLType::Int8Ty, i, false); 551 return gIR->context().getConstantInt(LLType::Int8Ty, i, false);
552 } 552 }
553 553
554 LLConstant* DtoConstFP(Type* t, long double value) 554 LLConstant* DtoConstFP(Type* t, long double value)
555 { 555 {
556 const LLType* llty = DtoType(t); 556 const LLType* llty = DtoType(t);
560 return gIR->context().getConstantFP(llty, value); 560 return gIR->context().getConstantFP(llty, value);
561 else if(llty == LLType::X86_FP80Ty) { 561 else if(llty == LLType::X86_FP80Ty) {
562 uint64_t bits[] = {0, 0}; 562 uint64_t bits[] = {0, 0};
563 bits[0] = *(uint64_t*)&value; 563 bits[0] = *(uint64_t*)&value;
564 bits[1] = *(uint16_t*)((uint64_t*)&value + 1); 564 bits[1] = *(uint16_t*)((uint64_t*)&value + 1);
565 return LLConstantFP::get(APFloat(APInt(80, 2, bits))); 565 return gIR->context().getConstantFP(APFloat(APInt(80, 2, bits)));
566 } else { 566 } else {
567 assert(0 && "Unknown floating point type encountered"); 567 assert(0 && "Unknown floating point type encountered");
568 } 568 }
569 } 569 }
570 570
571 ////////////////////////////////////////////////////////////////////////////////////////// 571 //////////////////////////////////////////////////////////////////////////////////////////
572 572
573 LLConstant* DtoConstString(const char* str) 573 LLConstant* DtoConstString(const char* str)
574 { 574 {
575 std::string s(str?str:""); 575 std::string s(str?str:"");
576 LLConstant* init = llvm::ConstantArray::get(s, true); 576 LLConstant* init = gIR->context().getConstantArray(s, true);
577 llvm::GlobalVariable* gvar = new llvm::GlobalVariable( 577 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(
578 *gIR->module, init->getType(), true,llvm::GlobalValue::InternalLinkage, init, ".str"); 578 *gIR->module, init->getType(), true,llvm::GlobalValue::InternalLinkage, init, ".str");
579 LLConstant* idxs[2] = { DtoConstUint(0), DtoConstUint(0) }; 579 LLConstant* idxs[2] = { DtoConstUint(0), DtoConstUint(0) };
580 return DtoConstSlice( 580 return DtoConstSlice(
581 DtoConstSize_t(s.length()), 581 DtoConstSize_t(s.length()),
583 ); 583 );
584 } 584 }
585 LLConstant* DtoConstStringPtr(const char* str, const char* section) 585 LLConstant* DtoConstStringPtr(const char* str, const char* section)
586 { 586 {
587 std::string s(str); 587 std::string s(str);
588 LLConstant* init = llvm::ConstantArray::get(s, true); 588 LLConstant* init = gIR->context().getConstantArray(s, true);
589 llvm::GlobalVariable* gvar = new llvm::GlobalVariable( 589 llvm::GlobalVariable* gvar = new llvm::GlobalVariable(
590 *gIR->module, init->getType(), true,llvm::GlobalValue::InternalLinkage, init, ".str"); 590 *gIR->module, init->getType(), true,llvm::GlobalValue::InternalLinkage, init, ".str");
591 if (section) gvar->setSection(section); 591 if (section) gvar->setSection(section);
592 LLConstant* idxs[2] = { DtoConstUint(0), DtoConstUint(0) }; 592 LLConstant* idxs[2] = { DtoConstUint(0), DtoConstUint(0) };
593 return llvm::ConstantExpr::getGetElementPtr(gvar,idxs,2); 593 return llvm::ConstantExpr::getGetElementPtr(gvar,idxs,2);