@@ -400,25 +400,16 @@ class TypeBlock
400
400
{
401
401
protected:
402
402
BitcodeReader& br_;
403
- TypeInfo* p_ ;
403
+ TypeInfo& I_ ;
404
404
405
405
public:
406
406
FieldId F;
407
- TypeInfo I;
408
407
409
408
TypeBlock (
410
- TypeInfo& I_ ,
409
+ TypeInfo& I ,
411
410
BitcodeReader& br) noexcept
412
411
: br_(br)
413
- , p_(&I_)
414
- {
415
- }
416
-
417
- explicit
418
- TypeBlock (
419
- BitcodeReader& br) noexcept
420
- : br_(br)
421
- , p_(&I)
412
+ , I_(I)
422
413
{
423
414
}
424
415
@@ -434,7 +425,7 @@ class TypeBlock
434
425
if (auto Err = br_.readBlock (B, ID))
435
426
return Err;
436
427
F = B.F ;
437
- p_-> Type = std::move (B.I );
428
+ I_. Type = std::move (B.I );
438
429
return llvm::Error::success ();
439
430
}
440
431
default :
@@ -450,15 +441,16 @@ class FieldTypeBlock
450
441
{
451
442
protected:
452
443
BitcodeReader& br_;
444
+ FieldTypeInfo& I_;
453
445
454
446
public:
455
447
FieldId F;
456
- FieldTypeInfo I;
457
448
458
- explicit
459
449
FieldTypeBlock (
450
+ FieldTypeInfo& I,
460
451
BitcodeReader& br) noexcept
461
452
: br_(br)
453
+ , I_(I)
462
454
{
463
455
}
464
456
@@ -471,9 +463,9 @@ class FieldTypeBlock
471
463
switch (ID)
472
464
{
473
465
case FIELD_TYPE_NAME:
474
- return decodeRecord (R, I .Name , Blob);
466
+ return decodeRecord (R, I_ .Name , Blob);
475
467
case FIELD_DEFAULT_VALUE:
476
- return decodeRecord (R, I .DefaultValue , Blob);
468
+ return decodeRecord (R, I_ .DefaultValue , Blob);
477
469
default :
478
470
return AnyBlock::parseRecord (R, ID, Blob);
479
471
}
@@ -491,7 +483,7 @@ class FieldTypeBlock
491
483
if (auto Err = br_.readBlock (B, ID))
492
484
return Err;
493
485
F = B.F ;
494
- I .Type = std::move (B.I );
486
+ I_ .Type = std::move (B.I );
495
487
return llvm::Error::success ();
496
488
}
497
489
default :
@@ -505,16 +497,15 @@ class FieldTypeBlock
505
497
class MemberTypeBlock
506
498
: public BitcodeReader::AnyBlock
507
499
{
508
- protected:
509
500
BitcodeReader& br_;
501
+ MemberTypeInfo& I_;
510
502
511
503
public:
512
- MemberTypeInfo I;
513
-
514
- explicit
515
504
MemberTypeBlock (
505
+ MemberTypeInfo& I,
516
506
BitcodeReader& br) noexcept
517
507
: br_(br)
508
+ , I_(I)
518
509
{
519
510
}
520
511
@@ -527,9 +518,9 @@ class MemberTypeBlock
527
518
switch (ID)
528
519
{
529
520
case MEMBER_TYPE_NAME:
530
- return decodeRecord (R, I .Name , Blob);
521
+ return decodeRecord (R, I_ .Name , Blob);
531
522
case MEMBER_TYPE_ACCESS:
532
- return decodeRecord (R, I .Access , Blob);
523
+ return decodeRecord (R, I_ .Access , Blob);
533
524
default :
534
525
return AnyBlock::parseRecord (R, ID, Blob);
535
526
}
@@ -546,13 +537,13 @@ class MemberTypeBlock
546
537
ReferenceBlock B (br_);
547
538
if (auto Err = br_.readBlock (B, ID))
548
539
return Err;
549
- I .Type = std::move (B.I );
540
+ I_ .Type = std::move (B.I );
550
541
return llvm::Error::success ();
551
542
}
552
543
case BI_JAVADOC_BLOCK_ID:
553
544
{
554
- I .javadoc .emplace ();
555
- JavadocBlock B (*I .javadoc , br_);
545
+ I_ .javadoc .emplace ();
546
+ JavadocBlock B (*I_ .javadoc , br_);
556
547
if (auto Err = br_.readBlock (B, ID))
557
548
return Err;
558
549
return llvm::Error::success ();
@@ -569,14 +560,15 @@ class BaseRecordBlock
569
560
: public BitcodeReader::AnyBlock
570
561
{
571
562
BitcodeReader& br_;
563
+ BaseRecordInfo& I_;
572
564
573
565
public:
574
- BaseRecordInfo I;
575
-
576
566
explicit
577
567
BaseRecordBlock (
568
+ BaseRecordInfo& I,
578
569
BitcodeReader& br) noexcept
579
570
: br_(br)
571
+ , I_(I)
580
572
{
581
573
}
582
574
@@ -589,13 +581,13 @@ class BaseRecordBlock
589
581
switch (ID)
590
582
{
591
583
case BASE_RECORD_TAG_TYPE:
592
- return decodeRecord (R, I .TagType , Blob);
584
+ return decodeRecord (R, I_ .TagType , Blob);
593
585
case BASE_RECORD_IS_VIRTUAL:
594
- return decodeRecord (R, I .IsVirtual , Blob);
586
+ return decodeRecord (R, I_ .IsVirtual , Blob);
595
587
case BASE_RECORD_ACCESS:
596
- return decodeRecord (R, I .Access , Blob);
588
+ return decodeRecord (R, I_ .Access , Blob);
597
589
case BASE_RECORD_IS_PARENT:
598
- return decodeRecord (R, I .IsParent , Blob);
590
+ return decodeRecord (R, I_ .IsParent , Blob);
599
591
default :
600
592
return AnyBlock::parseRecord (R, ID, Blob);
601
593
}
@@ -609,18 +601,15 @@ class BaseRecordBlock
609
601
{
610
602
case BI_INFO_PART_ID:
611
603
{
612
- InfoPartBlock B (I , br_);
604
+ InfoPartBlock B (I_ , br_);
613
605
if (auto Err = br_.readBlock (B, ID))
614
606
return Err;
615
607
return llvm::Error::success ();
616
608
}
617
609
case BI_MEMBER_TYPE_BLOCK_ID:
618
610
{
619
- MemberTypeBlock B (br_);
620
- if (auto Err = br_.readBlock (B, ID))
621
- return Err;
622
- I.Members .emplace_back (std::move (B.I ));
623
- return llvm::Error::success ();
611
+ MemberTypeBlock B (I_.Members .emplace_back (), br_);
612
+ return br_.readBlock (B, ID);
624
613
}
625
614
default :
626
615
return AnyBlock::readSubBlock (ID);
@@ -634,15 +623,16 @@ class TemplateSpecializationBlock
634
623
: public BitcodeReader::AnyBlock
635
624
{
636
625
BitcodeReader& br_;
626
+ llvm::Optional<TemplateSpecializationInfo>& I_;
637
627
638
628
public:
639
- TemplateSpecializationInfo I;
640
-
641
- explicit
642
629
TemplateSpecializationBlock (
643
- BitcodeReader& br) noexcept
630
+ llvm::Optional<TemplateSpecializationInfo>& I,
631
+ BitcodeReader& br)
644
632
: br_(br)
633
+ , I_(I)
645
634
{
635
+ I_.emplace ();
646
636
}
647
637
648
638
llvm::Error
@@ -652,9 +642,9 @@ class TemplateSpecializationBlock
652
642
switch (ID)
653
643
{
654
644
case TEMPLATE_SPECIALIZATION_OF:
655
- return decodeRecord (R, I. SpecializationOf , Blob);
645
+ return decodeRecord (R, I_-> SpecializationOf , Blob);
656
646
case TEMPLATE_PARAM_CONTENTS:
657
- return decodeRecord (R, I. Params .back ().Contents , Blob);
647
+ return decodeRecord (R, I_-> Params .back ().Contents , Blob);
658
648
default :
659
649
return AnyBlock::parseRecord (R, ID, Blob);
660
650
}
@@ -668,7 +658,7 @@ class TemplateSpecializationBlock
668
658
{
669
659
case BI_TEMPLATE_PARAM_BLOCK_ID:
670
660
{
671
- I. Params .emplace_back ();
661
+ I_-> Params .emplace_back ();
672
662
if (auto Err = br_.readBlock (*this , ID))
673
663
return Err;
674
664
return llvm::Error::success ();
@@ -685,15 +675,17 @@ class TemplateBlock
685
675
: public BitcodeReader::AnyBlock
686
676
{
687
677
BitcodeReader& br_;
678
+ llvm::Optional<TemplateInfo> I_;
688
679
689
680
public:
690
- TemplateInfo I;
691
-
692
681
explicit
693
682
TemplateBlock (
683
+ llvm::Optional<TemplateInfo>& I,
694
684
BitcodeReader& br) noexcept
695
685
: br_(br)
686
+ , I_(I)
696
687
{
688
+ I_.emplace ();
697
689
}
698
690
699
691
llvm::Error
@@ -703,7 +695,7 @@ class TemplateBlock
703
695
switch (ID)
704
696
{
705
697
case TEMPLATE_PARAM_CONTENTS:
706
- return decodeRecord (R, I. Params .back ().Contents , Blob);
698
+ return decodeRecord (R, I_-> Params .back ().Contents , Blob);
707
699
default :
708
700
return AnyBlock::parseRecord (R, ID, Blob);
709
701
}
@@ -717,18 +709,15 @@ class TemplateBlock
717
709
{
718
710
case BI_TEMPLATE_PARAM_BLOCK_ID:
719
711
{
720
- I. Params .emplace_back ();
712
+ I_-> Params .emplace_back ();
721
713
if (auto Err = br_.readBlock (*this , ID))
722
714
return Err;
723
715
return llvm::Error::success ();
724
716
}
725
717
case BI_TEMPLATE_SPECIALIZATION_BLOCK_ID:
726
718
{
727
- TemplateSpecializationBlock B (br_);
728
- if (auto Err = br_.readBlock (B, ID))
729
- return Err;
730
- I.Specialization .emplace (std::move (B.I ));
731
- return llvm::Error::success ();
719
+ TemplateSpecializationBlock B (I_->Specialization , br_);
720
+ return br_.readBlock (B, ID);
732
721
}
733
722
default :
734
723
return AnyBlock::readSubBlock (ID);
@@ -748,6 +737,7 @@ class TopLevelBlock
748
737
public:
749
738
std::unique_ptr<T> I;
750
739
740
+ explicit
751
741
TopLevelBlock (
752
742
BitcodeReader& br)
753
743
: br_(br)
@@ -881,11 +871,8 @@ class RecordBlock
881
871
{
882
872
case BI_MEMBER_TYPE_BLOCK_ID:
883
873
{
884
- MemberTypeBlock B (br_);
885
- if (auto Err = br_.readBlock (B, ID))
886
- return Err;
887
- I->Members .emplace_back (std::move (B.I ));
888
- return llvm::Error::success ();
874
+ MemberTypeBlock B (I->Members .emplace_back (), br_);
875
+ return br_.readBlock (B, ID);
889
876
}
890
877
case BI_REFERENCE_BLOCK_ID:
891
878
{
@@ -907,19 +894,13 @@ class RecordBlock
907
894
}
908
895
case BI_BASE_RECORD_BLOCK_ID:
909
896
{
910
- BaseRecordBlock B (br_);
911
- if (auto Err = br_.readBlock (B, ID))
912
- return Err;
913
- I->Bases .emplace_back (std::move (B.I ));
914
- return llvm::Error::success ();
897
+ BaseRecordBlock B (I->Bases .emplace_back (), br_);
898
+ return br_.readBlock (B, ID);
915
899
}
916
900
case BI_TEMPLATE_BLOCK_ID:
917
901
{
918
- TemplateBlock B (br_);
919
- if (auto Err = br_.readBlock (B, ID))
920
- return Err;
921
- I->Template .emplace (std::move (B.I ));
922
- return llvm::Error::success ();
902
+ TemplateBlock B (I->Template , br_);
903
+ return br_.readBlock (B, ID);
923
904
}
924
905
default :
925
906
break ;
@@ -981,13 +962,12 @@ class FunctionBlock
981
962
}
982
963
case BI_TYPE_BLOCK_ID:
983
964
{
984
- TypeBlock B (br_);
965
+ TypeBlock B (I-> ReturnType , br_);
985
966
if (auto Err = br_.readBlock (B, ID))
986
967
return Err;
987
968
switch (B.F )
988
969
{
989
970
case FieldId::F_type:
990
- I->ReturnType = std::move (B.I );
991
971
break ;
992
972
default :
993
973
return makeWrongFieldError (B.F );
@@ -996,13 +976,12 @@ class FunctionBlock
996
976
}
997
977
case BI_FIELD_TYPE_BLOCK_ID:
998
978
{
999
- FieldTypeBlock B (br_);
979
+ FieldTypeBlock B (I-> Params . emplace_back (), br_);
1000
980
if (auto Err = br_.readBlock (B, ID))
1001
981
return Err;
1002
982
switch (B.F )
1003
983
{
1004
984
case FieldId::F_type:
1005
- I->Params .emplace_back (std::move (B.I ));
1006
985
break ;
1007
986
default :
1008
987
return makeWrongFieldError (B.F );
@@ -1011,11 +990,8 @@ class FunctionBlock
1011
990
}
1012
991
case BI_TEMPLATE_BLOCK_ID:
1013
992
{
1014
- TemplateBlock B (br_);
1015
- if (auto Err = br_.readBlock (B, ID))
1016
- return Err;
1017
- I->Template .emplace (std::move (B.I ));
1018
- return llvm::Error::success ();
993
+ TemplateBlock B (I->Template , br_);
994
+ return br_.readBlock (B, ID);
1019
995
}
1020
996
default :
1021
997
break ;
@@ -1060,13 +1036,12 @@ class TypedefBlock
1060
1036
{
1061
1037
case BI_TYPE_BLOCK_ID:
1062
1038
{
1063
- TypeBlock B (br_);
1039
+ TypeBlock B (I-> Underlying , br_);
1064
1040
if (auto Err = br_.readBlock (B, ID))
1065
1041
return Err;
1066
1042
switch (B.F )
1067
1043
{
1068
1044
case FieldId::F_type:
1069
- I->Underlying = std::move (B.I );
1070
1045
break ;
1071
1046
default :
1072
1047
return makeWrongFieldError (B.F );
0 commit comments