@@ -924,16 +924,15 @@ AttrBuilder::AttrBuilder(AttributeSet AS, unsigned Idx)
924
924
}
925
925
926
926
void AttrBuilder::clear () {
927
- Attrs = 0 ;
927
+ Attrs. reset () ;
928
928
Alignment = StackAlignment = 0 ;
929
929
}
930
930
931
931
AttrBuilder &AttrBuilder::addAttribute (Attribute::AttrKind Val) {
932
- assert ((unsigned )Val < 64 && Val < Attribute::EndAttrKinds &&
933
- " Attribute out of range!" );
932
+ assert ((unsigned )Val < Attribute::EndAttrKinds && " Attribute out of range!" );
934
933
assert (Val != Attribute::Alignment && Val != Attribute::StackAlignment &&
935
934
" Adding alignment attribute without adding alignment value!" );
936
- Attrs |= 1ULL << Val ;
935
+ Attrs[Val] = true ;
937
936
return *this ;
938
937
}
939
938
@@ -944,7 +943,7 @@ AttrBuilder &AttrBuilder::addAttribute(Attribute Attr) {
944
943
}
945
944
946
945
Attribute::AttrKind Kind = Attr.getKindAsEnum ();
947
- Attrs |= 1ULL << Kind ;
946
+ Attrs[Kind] = true ;
948
947
949
948
if (Kind == Attribute::Alignment)
950
949
Alignment = Attr.getAlignment ();
@@ -959,9 +958,8 @@ AttrBuilder &AttrBuilder::addAttribute(StringRef A, StringRef V) {
959
958
}
960
959
961
960
AttrBuilder &AttrBuilder::removeAttribute (Attribute::AttrKind Val) {
962
- assert ((unsigned )Val < 64 && Val < Attribute::EndAttrKinds &&
963
- " Attribute out of range!" );
964
- Attrs &= ~(1ULL << Val);
961
+ assert ((unsigned )Val < Attribute::EndAttrKinds && " Attribute out of range!" );
962
+ Attrs[Val] = false ;
965
963
966
964
if (Val == Attribute::Alignment)
967
965
Alignment = 0 ;
@@ -985,7 +983,7 @@ AttrBuilder &AttrBuilder::removeAttributes(AttributeSet A, uint64_t Index) {
985
983
Attribute Attr = *I;
986
984
if (Attr.isEnumAttribute () || Attr.isAlignAttribute ()) {
987
985
Attribute::AttrKind Kind = I->getKindAsEnum ();
988
- Attrs &= ~( 1ULL << Kind) ;
986
+ Attrs[Kind] = false ;
989
987
990
988
if (Kind == Attribute::Alignment)
991
989
Alignment = 0 ;
@@ -1016,7 +1014,7 @@ AttrBuilder &AttrBuilder::addAlignmentAttr(unsigned Align) {
1016
1014
assert (isPowerOf2_32 (Align) && " Alignment must be a power of two." );
1017
1015
assert (Align <= 0x40000000 && " Alignment too large." );
1018
1016
1019
- Attrs |= 1ULL << Attribute::Alignment;
1017
+ Attrs[ Attribute::Alignment] = true ;
1020
1018
Alignment = Align;
1021
1019
return *this ;
1022
1020
}
@@ -1028,7 +1026,7 @@ AttrBuilder &AttrBuilder::addStackAlignmentAttr(unsigned Align) {
1028
1026
assert (isPowerOf2_32 (Align) && " Alignment must be a power of two." );
1029
1027
assert (Align <= 0x100 && " Alignment too large." );
1030
1028
1031
- Attrs |= 1ULL << Attribute::StackAlignment;
1029
+ Attrs[ Attribute::StackAlignment] = true ;
1032
1030
StackAlignment = Align;
1033
1031
return *this ;
1034
1032
}
@@ -1055,7 +1053,7 @@ bool AttrBuilder::contains(StringRef A) const {
1055
1053
}
1056
1054
1057
1055
bool AttrBuilder::hasAttributes () const {
1058
- return Attrs != 0 || !TargetDepAttrs.empty ();
1056
+ return !Attrs. none () || !TargetDepAttrs.empty ();
1059
1057
}
1060
1058
1061
1059
bool AttrBuilder::hasAttributes (AttributeSet A, uint64_t Index) const {
@@ -1072,7 +1070,7 @@ bool AttrBuilder::hasAttributes(AttributeSet A, uint64_t Index) const {
1072
1070
I != E; ++I) {
1073
1071
Attribute Attr = *I;
1074
1072
if (Attr.isEnumAttribute () || Attr.isAlignAttribute ()) {
1075
- if (Attrs & ( 1ULL << I->getKindAsEnum ()) )
1073
+ if (Attrs[ I->getKindAsEnum ()] )
1076
1074
return true ;
1077
1075
} else {
1078
1076
assert (Attr.isStringAttribute () && " Invalid attribute kind!" );
@@ -1106,7 +1104,7 @@ AttrBuilder &AttrBuilder::addRawValue(uint64_t Val) {
1106
1104
for (Attribute::AttrKind I = Attribute::None; I != Attribute::EndAttrKinds;
1107
1105
I = Attribute::AttrKind (I + 1 )) {
1108
1106
if (uint64_t A = (Val & AttributeImpl::getAttrMask (I))) {
1109
- Attrs |= 1ULL << I ;
1107
+ Attrs[I] = true ;
1110
1108
1111
1109
if (I == Attribute::Alignment)
1112
1110
Alignment = 1ULL << ((A >> 16 ) - 1 );
0 commit comments