Skip to content

Commit fe6a395

Browse files
committed
Move computing enum parameters to TypeSystemClang
1 parent 2bfd311 commit fe6a395

File tree

3 files changed

+16
-21
lines changed

3 files changed

+16
-21
lines changed

clang/include/clang/AST/Decl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3910,7 +3910,6 @@ class EnumDecl : public TagDecl {
39103910
void setInstantiationOfMemberEnum(ASTContext &C, EnumDecl *ED,
39113911
TemplateSpecializationKind TSK);
39123912

3913-
public:
39143913
/// Sets the width in bits required to store all the
39153914
/// non-negative enumerators of this enum.
39163915
void setNumPositiveBits(unsigned Num) {
@@ -3922,6 +3921,7 @@ class EnumDecl : public TagDecl {
39223921
/// negative enumerators of this enum. (see getNumNegativeBits)
39233922
void setNumNegativeBits(unsigned Num) { EnumDeclBits.NumNegativeBits = Num; }
39243923

3924+
public:
39253925
/// True if this tag declaration is a scoped enumeration. Only
39263926
/// possible in C++11 mode.
39273927
void setScoped(bool Scoped = true) { EnumDeclBits.IsScoped = Scoped; }

lldb/source/Plugins/SymbolFile/DWARF/DWARFASTParserClang.cpp

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2315,8 +2315,6 @@ size_t DWARFASTParserClang::ParseChildEnumerators(
23152315
return 0;
23162316

23172317
size_t enumerators_added = 0;
2318-
unsigned NumNegativeBits = 0;
2319-
unsigned NumPositiveBits = 0;
23202318

23212319
for (DWARFDIE die : parent_die.children()) {
23222320
const dw_tag_t tag = die.Tag();
@@ -2371,21 +2369,6 @@ size_t DWARFASTParserClang::ParseChildEnumerators(
23712369
++enumerators_added;
23722370
}
23732371
}
2374-
2375-
clang::EnumDecl *enum_decl =
2376-
ClangUtil::GetQualType(clang_type)->getAs<clang::EnumType>()->getDecl();
2377-
m_ast.getASTContext().computeEnumBits(enum_decl->enumerators(),
2378-
NumNegativeBits, NumPositiveBits);
2379-
enum_decl->setNumPositiveBits(NumPositiveBits);
2380-
enum_decl->setNumNegativeBits(NumNegativeBits);
2381-
2382-
clang::QualType BestPromotionType;
2383-
clang::QualType BestType;
2384-
m_ast.getASTContext().computeBestEnumTypes(
2385-
/*IsPacked=*/false, NumNegativeBits, NumPositiveBits, BestType,
2386-
BestPromotionType);
2387-
enum_decl->setPromotionType(BestPromotionType);
2388-
23892372
return enumerators_added;
23902373
}
23912374

lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8474,11 +8474,23 @@ bool TypeSystemClang::CompleteTagDeclarationDefinition(
84748474
if (enum_decl->isCompleteDefinition())
84758475
return true;
84768476

8477+
clang::ASTContext &ast = lldb_ast->getASTContext();
8478+
8479+
unsigned NumNegativeBits = 0;
8480+
unsigned NumPositiveBits = 0;
8481+
ast.computeEnumBits(enum_decl->enumerators(), NumNegativeBits,
8482+
NumPositiveBits);
8483+
8484+
clang::QualType BestPromotionType;
8485+
clang::QualType BestType;
8486+
ast.computeBestEnumTypes(/*IsPacked=*/false, NumNegativeBits, NumPositiveBits,
8487+
BestType, BestPromotionType);
8488+
84778489
QualType integer_type(enum_decl->getIntegerType());
84788490
if (!integer_type.isNull()) {
8479-
enum_decl->completeDefinition(
8480-
enum_decl->getIntegerType(), enum_decl->getPromotionType(),
8481-
enum_decl->getNumPositiveBits(), enum_decl->getNumNegativeBits());
8491+
enum_decl->completeDefinition(enum_decl->getIntegerType(),
8492+
BestPromotionType, NumPositiveBits,
8493+
NumNegativeBits);
84828494
}
84838495
return true;
84848496
}

0 commit comments

Comments
 (0)