comparison gen/runtime.cpp @ 632:df196c8dea26

Updated to latest LLVM trunk, function notes have been removed and merged with parameter attributes, which have been renamed to just attributes. Nothing seems to have broke!
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 01 Oct 2008 23:17:14 +0200
parents e6bcc4d9e5ff
children 669a2c84f4e4
comparison
equal deleted inserted replaced
629:607b6b5819a7 632:df196c8dea26
67 //return NULL; 67 //return NULL;
68 } 68 }
69 69
70 const llvm::FunctionType* fnty = fn->getFunctionType(); 70 const llvm::FunctionType* fnty = fn->getFunctionType();
71 llvm::Function* resfn = llvm::cast<llvm::Function>(target->getOrInsertFunction(name, fnty)); 71 llvm::Function* resfn = llvm::cast<llvm::Function>(target->getOrInsertFunction(name, fnty));
72 resfn->setParamAttrs(fn->getParamAttrs()); 72 resfn->setAttributes(fn->getAttributes());
73 return resfn; 73 return resfn;
74 } 74 }
75 75
76 ////////////////////////////////////////////////////////////////////////////////////////////////// 76 //////////////////////////////////////////////////////////////////////////////////////////////////
77 77
199 std::string fname3("_d_switch_error"); 199 std::string fname3("_d_switch_error");
200 std::vector<const LLType*> types; 200 std::vector<const LLType*> types;
201 types.push_back(stringTy); 201 types.push_back(stringTy);
202 types.push_back(intTy); 202 types.push_back(intTy);
203 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); 203 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
204 llvm::PAListPtr palist; 204 llvm::AttrListPtr palist;
205 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); 205 palist = palist.addAttr(1, llvm::Attribute::ByVal);
206 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 206 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
207 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); 207 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
208 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M)->setParamAttrs(palist); 208 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M)->setAttributes(palist);
209 } 209 }
210 210
211 // void _d_assert_msg( char[] msg, char[] file, uint line ) 211 // void _d_assert_msg( char[] msg, char[] file, uint line )
212 { 212 {
213 std::string fname("_d_assert_msg"); 213 std::string fname("_d_assert_msg");
214 std::vector<const LLType*> types; 214 std::vector<const LLType*> types;
215 types.push_back(stringTy); 215 types.push_back(stringTy);
216 types.push_back(stringTy); 216 types.push_back(stringTy);
217 types.push_back(intTy); 217 types.push_back(intTy);
218 const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); 218 const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false);
219 llvm::PAListPtr palist; 219 llvm::AttrListPtr palist;
220 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); 220 palist = palist.addAttr(1, llvm::Attribute::ByVal);
221 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); 221 palist = palist.addAttr(2, llvm::Attribute::ByVal);
222 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 222 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
223 } 223 }
224 224
225 ///////////////////////////////////////////////////////////////////////////////////// 225 /////////////////////////////////////////////////////////////////////////////////////
226 ///////////////////////////////////////////////////////////////////////////////////// 226 /////////////////////////////////////////////////////////////////////////////////////
227 ///////////////////////////////////////////////////////////////////////////////////// 227 /////////////////////////////////////////////////////////////////////////////////////
381 std::string fname2(b); \ 381 std::string fname2(b); \
382 std::vector<const LLType*> types; \ 382 std::vector<const LLType*> types; \
383 types.push_back(TY); \ 383 types.push_back(TY); \
384 types.push_back(rt_dg1()); \ 384 types.push_back(rt_dg1()); \
385 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \ 385 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
386 llvm::PAListPtr palist; \ 386 llvm::AttrListPtr palist; \
387 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \ 387 palist = palist.addAttr(1, llvm::Attribute::ByVal); \
388 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \ 388 palist = palist.addAttr(2, llvm::Attribute::ByVal); \
389 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \ 389 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
390 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \ 390 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
391 } 391 }
392 STR_APPLY1(stringTy, "_aApplycw1", "_aApplycd1") 392 STR_APPLY1(stringTy, "_aApplycw1", "_aApplycd1")
393 STR_APPLY1(wstringTy, "_aApplywc1", "_aApplywd1") 393 STR_APPLY1(wstringTy, "_aApplywc1", "_aApplywd1")
394 STR_APPLY1(dstringTy, "_aApplydc1", "_aApplydw1") 394 STR_APPLY1(dstringTy, "_aApplydc1", "_aApplydw1")
395 #undef STR_APPLY 395 #undef STR_APPLY
401 std::string fname2(b); \ 401 std::string fname2(b); \
402 std::vector<const LLType*> types; \ 402 std::vector<const LLType*> types; \
403 types.push_back(TY); \ 403 types.push_back(TY); \
404 types.push_back(rt_dg2()); \ 404 types.push_back(rt_dg2()); \
405 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \ 405 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
406 llvm::PAListPtr palist; \ 406 llvm::AttrListPtr palist; \
407 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \ 407 palist = palist.addAttr(1, llvm::Attribute::ByVal); \
408 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \ 408 palist = palist.addAttr(2, llvm::Attribute::ByVal); \
409 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \ 409 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
410 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \ 410 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
411 } 411 }
412 STR_APPLY2(stringTy, "_aApplycw2", "_aApplycd2") 412 STR_APPLY2(stringTy, "_aApplycw2", "_aApplycd2")
413 STR_APPLY2(wstringTy, "_aApplywc2", "_aApplywd2") 413 STR_APPLY2(wstringTy, "_aApplywc2", "_aApplywd2")
414 STR_APPLY2(dstringTy, "_aApplydc2", "_aApplydw2") 414 STR_APPLY2(dstringTy, "_aApplydc2", "_aApplydw2")
415 #undef STR_APPLY2 415 #undef STR_APPLY2
420 std::string fname2(b); \ 420 std::string fname2(b); \
421 std::vector<const LLType*> types; \ 421 std::vector<const LLType*> types; \
422 types.push_back(TY); \ 422 types.push_back(TY); \
423 types.push_back(rt_dg1()); \ 423 types.push_back(rt_dg1()); \
424 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \ 424 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
425 llvm::PAListPtr palist; \ 425 llvm::AttrListPtr palist; \
426 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \ 426 palist = palist.addAttr(1, llvm::Attribute::ByVal); \
427 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \ 427 palist = palist.addAttr(2, llvm::Attribute::ByVal); \
428 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \ 428 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
429 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \ 429 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
430 } 430 }
431 STR_APPLY_R1(stringTy, "_aApplyRcw1", "_aApplyRcd1") 431 STR_APPLY_R1(stringTy, "_aApplyRcw1", "_aApplyRcd1")
432 STR_APPLY_R1(wstringTy, "_aApplyRwc1", "_aApplyRwd1") 432 STR_APPLY_R1(wstringTy, "_aApplyRwc1", "_aApplyRwd1")
433 STR_APPLY_R1(dstringTy, "_aApplyRdc1", "_aApplyRdw1") 433 STR_APPLY_R1(dstringTy, "_aApplyRdc1", "_aApplyRdw1")
434 #undef STR_APPLY 434 #undef STR_APPLY
439 std::string fname2(b); \ 439 std::string fname2(b); \
440 std::vector<const LLType*> types; \ 440 std::vector<const LLType*> types; \
441 types.push_back(TY); \ 441 types.push_back(TY); \
442 types.push_back(rt_dg2()); \ 442 types.push_back(rt_dg2()); \
443 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \ 443 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
444 llvm::PAListPtr palist; \ 444 llvm::AttrListPtr palist; \
445 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \ 445 palist = palist.addAttr(1, llvm::Attribute::ByVal); \
446 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \ 446 palist = palist.addAttr(2, llvm::Attribute::ByVal); \
447 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \ 447 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
448 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \ 448 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
449 } 449 }
450 STR_APPLY_R2(stringTy, "_aApplyRcw2", "_aApplyRcd2") 450 STR_APPLY_R2(stringTy, "_aApplyRcw2", "_aApplyRcd2")
451 STR_APPLY_R2(wstringTy, "_aApplyRwc2", "_aApplyRwd2") 451 STR_APPLY_R2(wstringTy, "_aApplyRwc2", "_aApplyRwd2")
452 STR_APPLY_R2(dstringTy, "_aApplyRdc2", "_aApplyRdw2") 452 STR_APPLY_R2(dstringTy, "_aApplyRdc2", "_aApplyRdw2")
453 #undef STR_APPLY2 453 #undef STR_APPLY2
531 std::string fname2("_adSortChar"); 531 std::string fname2("_adSortChar");
532 std::vector<const LLType*> types; 532 std::vector<const LLType*> types;
533 types.push_back(stringTy); 533 types.push_back(stringTy);
534 types.push_back(stringTy); 534 types.push_back(stringTy);
535 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); 535 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
536 llvm::PAListPtr palist; 536 llvm::AttrListPtr palist;
537 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); 537 palist = palist.addAttr(2, llvm::Attribute::ByVal);
538 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 538 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
539 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); 539 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
540 } 540 }
541 541
542 // wchar[] _adReverseWchar(wchar[] a) 542 // wchar[] _adReverseWchar(wchar[] a)
543 // wchar[] _adSortWchar(wchar[] a) 543 // wchar[] _adSortWchar(wchar[] a)
544 { 544 {
546 std::string fname2("_adSortWchar"); 546 std::string fname2("_adSortWchar");
547 std::vector<const LLType*> types; 547 std::vector<const LLType*> types;
548 types.push_back(wstringTy); 548 types.push_back(wstringTy);
549 types.push_back(wstringTy); 549 types.push_back(wstringTy);
550 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); 550 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
551 llvm::PAListPtr palist; 551 llvm::AttrListPtr palist;
552 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); 552 palist = palist.addAttr(2, llvm::Attribute::ByVal);
553 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 553 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
554 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); 554 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
555 } 555 }
556 556
557 // Array _adReverse(Array a, size_t szelem) 557 // Array _adReverse(Array a, size_t szelem)
558 { 558 {
559 std::string fname("_adReverse"); 559 std::string fname("_adReverse");
560 std::vector<const LLType*> types; 560 std::vector<const LLType*> types;
561 types.push_back(rt_array(byteTy)); 561 types.push_back(rt_array(byteTy));
562 types.push_back(rt_array(byteTy)); 562 types.push_back(rt_array(byteTy));
563 types.push_back(sizeTy); 563 types.push_back(sizeTy);
564 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); 564 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
565 llvm::PAListPtr palist; 565 llvm::AttrListPtr palist;
566 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); 566 palist = palist.addAttr(2, llvm::Attribute::ByVal);
567 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 567 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
568 } 568 }
569 569
570 // Array _adDupT(TypeInfo ti, Array a) 570 // Array _adDupT(TypeInfo ti, Array a)
571 { 571 {
572 std::string fname("_adDupT"); 572 std::string fname("_adDupT");
573 std::vector<const LLType*> types; 573 std::vector<const LLType*> types;
574 types.push_back(rt_array(byteTy)); 574 types.push_back(rt_array(byteTy));
575 types.push_back(typeInfoTy); 575 types.push_back(typeInfoTy);
576 types.push_back(rt_array(byteTy)); 576 types.push_back(rt_array(byteTy));
577 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); 577 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
578 llvm::PAListPtr palist; 578 llvm::AttrListPtr palist;
579 palist = palist.addAttr(3, llvm::ParamAttr::ByVal); 579 palist = palist.addAttr(3, llvm::Attribute::ByVal);
580 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 580 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
581 } 581 }
582 582
583 // int _adEq(Array a1, Array a2, TypeInfo ti) 583 // int _adEq(Array a1, Array a2, TypeInfo ti)
584 // int _adCmp(Array a1, Array a2, TypeInfo ti) 584 // int _adCmp(Array a1, Array a2, TypeInfo ti)
585 { 585 {
588 std::vector<const LLType*> types; 588 std::vector<const LLType*> types;
589 types.push_back(rt_array(byteTy)); 589 types.push_back(rt_array(byteTy));
590 types.push_back(rt_array(byteTy)); 590 types.push_back(rt_array(byteTy));
591 types.push_back(typeInfoTy); 591 types.push_back(typeInfoTy);
592 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); 592 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
593 llvm::PAListPtr palist; 593 llvm::AttrListPtr palist;
594 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); 594 palist = palist.addAttr(1, llvm::Attribute::ByVal);
595 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); 595 palist = palist.addAttr(2, llvm::Attribute::ByVal);
596 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 596 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
597 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); 597 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
598 } 598 }
599 599
600 // int _adCmpChar(Array a1, Array a2) 600 // int _adCmpChar(Array a1, Array a2)
601 { 601 {
602 std::string fname("_adCmpChar"); 602 std::string fname("_adCmpChar");
603 std::vector<const LLType*> types; 603 std::vector<const LLType*> types;
604 types.push_back(rt_array(byteTy)); 604 types.push_back(rt_array(byteTy));
605 types.push_back(rt_array(byteTy)); 605 types.push_back(rt_array(byteTy));
606 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); 606 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
607 llvm::PAListPtr palist; 607 llvm::AttrListPtr palist;
608 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); 608 palist = palist.addAttr(1, llvm::Attribute::ByVal);
609 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); 609 palist = palist.addAttr(2, llvm::Attribute::ByVal);
610 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 610 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
611 } 611 }
612 612
613 // Array _adSort(Array a, TypeInfo ti) 613 // Array _adSort(Array a, TypeInfo ti)
614 { 614 {
615 std::string fname("_adSort"); 615 std::string fname("_adSort");
616 std::vector<const LLType*> types; 616 std::vector<const LLType*> types;
617 types.push_back(rt_array(byteTy)); 617 types.push_back(rt_array(byteTy));
618 types.push_back(rt_array(byteTy)); 618 types.push_back(rt_array(byteTy));
619 types.push_back(typeInfoTy); 619 types.push_back(typeInfoTy);
620 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); 620 const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
621 llvm::PAListPtr palist; 621 llvm::AttrListPtr palist;
622 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); 622 palist = palist.addAttr(2, llvm::Attribute::ByVal);
623 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 623 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
624 } 624 }
625 625
626 ///////////////////////////////////////////////////////////////////////////////////// 626 /////////////////////////////////////////////////////////////////////////////////////
627 ///////////////////////////////////////////////////////////////////////////////////// 627 /////////////////////////////////////////////////////////////////////////////////////
628 ///////////////////////////////////////////////////////////////////////////////////// 628 /////////////////////////////////////////////////////////////////////////////////////
721 std::vector<const LLType*> types; 721 std::vector<const LLType*> types;
722 types.push_back(aaTy); 722 types.push_back(aaTy);
723 types.push_back(sizeTy); 723 types.push_back(sizeTy);
724 types.push_back(rt_dg1()); 724 types.push_back(rt_dg1());
725 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); 725 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
726 llvm::PAListPtr palist; 726 llvm::AttrListPtr palist;
727 palist = palist.addAttr(3, llvm::ParamAttr::ByVal); 727 palist = palist.addAttr(3, llvm::Attribute::ByVal);
728 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 728 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
729 } 729 }
730 730
731 // int _aaApply2(AA aa, size_t keysize, dg2_t dg) 731 // int _aaApply2(AA aa, size_t keysize, dg2_t dg)
732 { 732 {
733 std::string fname("_aaApply2"); 733 std::string fname("_aaApply2");
734 std::vector<const LLType*> types; 734 std::vector<const LLType*> types;
735 types.push_back(aaTy); 735 types.push_back(aaTy);
736 types.push_back(sizeTy); 736 types.push_back(sizeTy);
737 types.push_back(rt_dg1()); 737 types.push_back(rt_dg1());
738 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); 738 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
739 llvm::PAListPtr palist; 739 llvm::AttrListPtr palist;
740 palist = palist.addAttr(3, llvm::ParamAttr::ByVal); 740 palist = palist.addAttr(3, llvm::Attribute::ByVal);
741 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 741 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
742 } 742 }
743 743
744 ///////////////////////////////////////////////////////////////////////////////////// 744 /////////////////////////////////////////////////////////////////////////////////////
745 ///////////////////////////////////////////////////////////////////////////////////// 745 /////////////////////////////////////////////////////////////////////////////////////
746 ///////////////////////////////////////////////////////////////////////////////////// 746 /////////////////////////////////////////////////////////////////////////////////////
811 std::string fname("_d_switch_string"); 811 std::string fname("_d_switch_string");
812 std::vector<const LLType*> types; 812 std::vector<const LLType*> types;
813 types.push_back(rt_array(rt_array2(byteTy))); 813 types.push_back(rt_array(rt_array2(byteTy)));
814 types.push_back(stringTy); 814 types.push_back(stringTy);
815 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); 815 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
816 llvm::PAListPtr palist; 816 llvm::AttrListPtr palist;
817 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); 817 palist = palist.addAttr(1, llvm::Attribute::ByVal);
818 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); 818 palist = palist.addAttr(2, llvm::Attribute::ByVal);
819 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 819 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
820 } 820 }
821 821
822 // int _d_switch_ustring(wchar[][] table, wchar[] ca) 822 // int _d_switch_ustring(wchar[][] table, wchar[] ca)
823 { 823 {
824 std::string fname("_d_switch_ustring"); 824 std::string fname("_d_switch_ustring");
825 std::vector<const LLType*> types; 825 std::vector<const LLType*> types;
826 types.push_back(rt_array(rt_array2(shortTy))); 826 types.push_back(rt_array(rt_array2(shortTy)));
827 types.push_back(wstringTy); 827 types.push_back(wstringTy);
828 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); 828 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
829 llvm::PAListPtr palist; 829 llvm::AttrListPtr palist;
830 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); 830 palist = palist.addAttr(1, llvm::Attribute::ByVal);
831 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); 831 palist = palist.addAttr(2, llvm::Attribute::ByVal);
832 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 832 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
833 } 833 }
834 834
835 // int _d_switch_dstring(dchar[][] table, dchar[] ca) 835 // int _d_switch_dstring(dchar[][] table, dchar[] ca)
836 { 836 {
837 std::string fname("_d_switch_dstring"); 837 std::string fname("_d_switch_dstring");
838 std::vector<const LLType*> types; 838 std::vector<const LLType*> types;
839 types.push_back(rt_array(rt_array2(intTy))); 839 types.push_back(rt_array(rt_array2(intTy)));
840 types.push_back(dstringTy); 840 types.push_back(dstringTy);
841 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); 841 const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
842 llvm::PAListPtr palist; 842 llvm::AttrListPtr palist;
843 palist = palist.addAttr(1, llvm::ParamAttr::ByVal); 843 palist = palist.addAttr(1, llvm::Attribute::ByVal);
844 palist = palist.addAttr(2, llvm::ParamAttr::ByVal); 844 palist = palist.addAttr(2, llvm::Attribute::ByVal);
845 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 845 llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
846 } 846 }
847 847
848 ///////////////////////////////////////////////////////////////////////////////////// 848 /////////////////////////////////////////////////////////////////////////////////////
849 ///////////////////////////////////////////////////////////////////////////////////// 849 /////////////////////////////////////////////////////////////////////////////////////
850 ///////////////////////////////////////////////////////////////////////////////////// 850 /////////////////////////////////////////////////////////////////////////////////////