Skip to content

Commit e3f684d

Browse files
committed
[clang][NFC] Refactor bit-fields in DefaultedFunctionKind
This patch makes all bit-fields in `DefaultedFunctionKind` of type `unsigned`, which brings `sizeof(DefaultedFunctionKind)` down from 8 to 4 when compiling Clang for Microsoft ABI.
1 parent 15279e7 commit e3f684d

File tree

1 file changed

+9
-9
lines changed
  • clang/include/clang/Sema

1 file changed

+9
-9
lines changed

clang/include/clang/Sema/Sema.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3501,37 +3501,37 @@ class Sema final {
35013501

35023502
/// For a defaulted function, the kind of defaulted function that it is.
35033503
class DefaultedFunctionKind {
3504-
CXXSpecialMember SpecialMember : 8;
3505-
DefaultedComparisonKind Comparison : 8;
3504+
unsigned SpecialMember : 8;
3505+
unsigned Comparison : 8;
35063506

35073507
public:
35083508
DefaultedFunctionKind()
3509-
: SpecialMember(CXXInvalid), Comparison(DefaultedComparisonKind::None) {
3509+
: SpecialMember(CXXInvalid), Comparison(llvm::to_underlying(DefaultedComparisonKind::None)) {
35103510
}
35113511
DefaultedFunctionKind(CXXSpecialMember CSM)
3512-
: SpecialMember(CSM), Comparison(DefaultedComparisonKind::None) {}
3512+
: SpecialMember(CSM), Comparison(llvm::to_underlying(DefaultedComparisonKind::None)) {}
35133513
DefaultedFunctionKind(DefaultedComparisonKind Comp)
3514-
: SpecialMember(CXXInvalid), Comparison(Comp) {}
3514+
: SpecialMember(CXXInvalid), Comparison(llvm::to_underlying(Comp)) {}
35153515

35163516
bool isSpecialMember() const { return SpecialMember != CXXInvalid; }
35173517
bool isComparison() const {
3518-
return Comparison != DefaultedComparisonKind::None;
3518+
return static_cast<DefaultedComparisonKind>(Comparison) != DefaultedComparisonKind::None;
35193519
}
35203520

35213521
explicit operator bool() const {
35223522
return isSpecialMember() || isComparison();
35233523
}
35243524

3525-
CXXSpecialMember asSpecialMember() const { return SpecialMember; }
3526-
DefaultedComparisonKind asComparison() const { return Comparison; }
3525+
CXXSpecialMember asSpecialMember() const { return static_cast<CXXSpecialMember>(SpecialMember); }
3526+
DefaultedComparisonKind asComparison() const { return static_cast<DefaultedComparisonKind>(Comparison); }
35273527

35283528
/// Get the index of this function kind for use in diagnostics.
35293529
unsigned getDiagnosticIndex() const {
35303530
static_assert(CXXInvalid > CXXDestructor,
35313531
"invalid should have highest index");
35323532
static_assert((unsigned)DefaultedComparisonKind::None == 0,
35333533
"none should be equal to zero");
3534-
return SpecialMember + (unsigned)Comparison;
3534+
return SpecialMember + Comparison;
35353535
}
35363536
};
35373537

0 commit comments

Comments
 (0)