Mercurial > projects > ldc
comparison gen/tollvm.cpp @ 1554:d6e8d5db259f
LLVMContext changes up to r77366
author | Benjamin Kramer <benny.kra@gmail.com> |
---|---|
date | Thu, 30 Jul 2009 15:25:10 +0200 |
parents | 259b031f3d22 |
children | 1d5c3354b3c2 |
comparison
equal
deleted
inserted
replaced
1553:f55ca8a1598c | 1554:d6e8d5db259f |
---|---|
529 | 529 |
530 ////////////////////////////////////////////////////////////////////////////////////////// | 530 ////////////////////////////////////////////////////////////////////////////////////////// |
531 | 531 |
532 llvm::ConstantInt* DtoConstSize_t(uint64_t i) | 532 llvm::ConstantInt* DtoConstSize_t(uint64_t i) |
533 { | 533 { |
534 return gIR->context().getConstantInt(DtoSize_t(), i, false); | 534 return LLConstantInt::get(DtoSize_t(), i, false); |
535 } | 535 } |
536 llvm::ConstantInt* DtoConstUint(unsigned i) | 536 llvm::ConstantInt* DtoConstUint(unsigned i) |
537 { | 537 { |
538 return gIR->context().getConstantInt(LLType::Int32Ty, i, false); | 538 return LLConstantInt::get(LLType::Int32Ty, i, false); |
539 } | 539 } |
540 llvm::ConstantInt* DtoConstInt(int i) | 540 llvm::ConstantInt* DtoConstInt(int i) |
541 { | 541 { |
542 return gIR->context().getConstantInt(LLType::Int32Ty, i, true); | 542 return LLConstantInt::get(LLType::Int32Ty, i, true); |
543 } | 543 } |
544 LLConstant* DtoConstBool(bool b) | 544 LLConstant* DtoConstBool(bool b) |
545 { | 545 { |
546 return gIR->context().getConstantInt(LLType::Int1Ty, b, false); | 546 return LLConstantInt::get(LLType::Int1Ty, b, false); |
547 } | 547 } |
548 llvm::ConstantInt* DtoConstUbyte(unsigned char i) | 548 llvm::ConstantInt* DtoConstUbyte(unsigned char i) |
549 { | 549 { |
550 return gIR->context().getConstantInt(LLType::Int8Ty, i, false); | 550 return LLConstantInt::get(LLType::Int8Ty, i, false); |
551 } | 551 } |
552 | 552 |
553 LLConstant* DtoConstFP(Type* t, long double value) | 553 LLConstant* DtoConstFP(Type* t, long double value) |
554 { | 554 { |
555 const LLType* llty = DtoType(t); | 555 const LLType* llty = DtoType(t); |
556 assert(llty->isFloatingPoint()); | 556 assert(llty->isFloatingPoint()); |
557 | 557 |
558 if(llty == LLType::FloatTy || llty == LLType::DoubleTy) | 558 if(llty == LLType::FloatTy || llty == LLType::DoubleTy) |
559 return gIR->context().getConstantFP(llty, value); | 559 return LLConstantFP::get(llty, value); |
560 else if(llty == LLType::X86_FP80Ty) { | 560 else if(llty == LLType::X86_FP80Ty) { |
561 uint64_t bits[] = {0, 0}; | 561 uint64_t bits[] = {0, 0}; |
562 bits[0] = *(uint64_t*)&value; | 562 bits[0] = *(uint64_t*)&value; |
563 bits[1] = *(uint16_t*)((uint64_t*)&value + 1); | 563 bits[1] = *(uint16_t*)((uint64_t*)&value + 1); |
564 return gIR->context().getConstantFP(APFloat(APInt(80, 2, bits))); | 564 return LLConstantFP::get(gIR->context(), APFloat(APInt(80, 2, bits))); |
565 } else { | 565 } else { |
566 assert(0 && "Unknown floating point type encountered"); | 566 assert(0 && "Unknown floating point type encountered"); |
567 } | 567 } |
568 } | 568 } |
569 | 569 |
570 ////////////////////////////////////////////////////////////////////////////////////////// | 570 ////////////////////////////////////////////////////////////////////////////////////////// |
571 | 571 |
572 LLConstant* DtoConstString(const char* str) | 572 LLConstant* DtoConstString(const char* str) |
573 { | 573 { |
574 std::string s(str?str:""); | 574 std::string s(str?str:""); |
575 LLConstant* init = gIR->context().getConstantArray(s, true); | 575 LLConstant* init = LLConstantArray::get(s, true); |
576 llvm::GlobalVariable* gvar = new llvm::GlobalVariable( | 576 llvm::GlobalVariable* gvar = new llvm::GlobalVariable( |
577 *gIR->module, init->getType(), true,llvm::GlobalValue::InternalLinkage, init, ".str"); | 577 *gIR->module, init->getType(), true,llvm::GlobalValue::InternalLinkage, init, ".str"); |
578 LLConstant* idxs[2] = { DtoConstUint(0), DtoConstUint(0) }; | 578 LLConstant* idxs[2] = { DtoConstUint(0), DtoConstUint(0) }; |
579 return DtoConstSlice( | 579 return DtoConstSlice( |
580 DtoConstSize_t(s.length()), | 580 DtoConstSize_t(s.length()), |
582 ); | 582 ); |
583 } | 583 } |
584 LLConstant* DtoConstStringPtr(const char* str, const char* section) | 584 LLConstant* DtoConstStringPtr(const char* str, const char* section) |
585 { | 585 { |
586 std::string s(str); | 586 std::string s(str); |
587 LLConstant* init = gIR->context().getConstantArray(s, true); | 587 LLConstant* init = LLConstantArray::get(s, true); |
588 llvm::GlobalVariable* gvar = new llvm::GlobalVariable( | 588 llvm::GlobalVariable* gvar = new llvm::GlobalVariable( |
589 *gIR->module, init->getType(), true,llvm::GlobalValue::InternalLinkage, init, ".str"); | 589 *gIR->module, init->getType(), true,llvm::GlobalValue::InternalLinkage, init, ".str"); |
590 if (section) gvar->setSection(section); | 590 if (section) gvar->setSection(section); |
591 LLConstant* idxs[2] = { DtoConstUint(0), DtoConstUint(0) }; | 591 LLConstant* idxs[2] = { DtoConstUint(0), DtoConstUint(0) }; |
592 return llvm::ConstantExpr::getGetElementPtr(gvar,idxs,2); | 592 return llvm::ConstantExpr::getGetElementPtr(gvar,idxs,2); |