Mercurial > projects > ldc
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); |