@@ -7624,7 +7624,7 @@ NamedDecl *Sema::ActOnVariableDeclarator(
76247624 if (NewVD->getType().hasNonTrivialToPrimitiveDestructCUnion() &&
76257625 NewVD->hasLocalStorage())
76267626 checkNonTrivialCUnion(NewVD->getType(), NewVD->getLocation(),
7627- NTCUC_AutoVar , NTCUK_Destruct);
7627+ NonTrivialCUnionContext::AutoVar , NTCUK_Destruct);
76287628 } else {
76297629 bool Invalid = false;
76307630 // Match up the template parameter lists with the scope specifier, then
@@ -10529,9 +10529,9 @@ Sema::ActOnFunctionDeclarator(Scope *S, Declarator &D, DeclContext *DC,
1052910529
1053010530 if (NewFD->getReturnType().hasNonTrivialToPrimitiveDestructCUnion() ||
1053110531 NewFD->getReturnType().hasNonTrivialToPrimitiveCopyCUnion())
10532- checkNonTrivialCUnion(NewFD->getReturnType(),
10533- NewFD->getReturnTypeSourceRange().getBegin(),
10534- NTCUC_FunctionReturn , NTCUK_Destruct| NTCUK_Copy);
10532+ checkNonTrivialCUnion(
10533+ NewFD->getReturnType(), NewFD->getReturnTypeSourceRange().getBegin(),
10534+ NonTrivialCUnionContext::FunctionReturn , NTCUK_Destruct | NTCUK_Copy);
1053510535 } else {
1053610536 // C++11 [replacement.functions]p3:
1053710537 // The program's definitions shall not be specified as inline.
@@ -13188,15 +13188,17 @@ void Sema::checkNonTrivialCUnionInInitializer(const Expr *Init,
1318813188
1318913189 if (isa<ImplicitValueInitExpr>(Init)) {
1319013190 if (InitType.hasNonTrivialToPrimitiveDefaultInitializeCUnion())
13191- checkNonTrivialCUnion(InitType, Loc, NTCUC_DefaultInitializedObject,
13191+ checkNonTrivialCUnion(InitType, Loc,
13192+ NonTrivialCUnionContext::DefaultInitializedObject,
1319213193 NTCUK_Init);
1319313194 } else {
1319413195 // Assume all other explicit initializers involving copying some existing
1319513196 // object.
1319613197 // TODO: ignore any explicit initializers where we can guarantee
1319713198 // copy-elision.
1319813199 if (InitType.hasNonTrivialToPrimitiveCopyCUnion())
13199- checkNonTrivialCUnion(InitType, Loc, NTCUC_CopyInit, NTCUK_Copy);
13200+ checkNonTrivialCUnion(InitType, Loc, NonTrivialCUnionContext::CopyInit,
13201+ NTCUK_Copy);
1320013202 }
1320113203}
1320213204
@@ -13220,7 +13222,7 @@ struct DiagNonTrivalCUnionDefaultInitializeVisitor
1322013222
1322113223 DiagNonTrivalCUnionDefaultInitializeVisitor(
1322213224 QualType OrigTy, SourceLocation OrigLoc,
13223- Sema:: NonTrivialCUnionContext UseContext, Sema &S)
13225+ NonTrivialCUnionContext UseContext, Sema &S)
1322413226 : OrigTy(OrigTy), OrigLoc(OrigLoc), UseContext(UseContext), S(S) {}
1322513227
1322613228 void visitWithKind(QualType::PrimitiveDefaultInitializeKind PDIK, QualType QT,
@@ -13274,7 +13276,7 @@ struct DiagNonTrivalCUnionDefaultInitializeVisitor
1327413276 // non-trivial C union.
1327513277 QualType OrigTy;
1327613278 SourceLocation OrigLoc;
13277- Sema:: NonTrivialCUnionContext UseContext;
13279+ NonTrivialCUnionContext UseContext;
1327813280 Sema &S;
1327913281};
1328013282
@@ -13283,9 +13285,10 @@ struct DiagNonTrivalCUnionDestructedTypeVisitor
1328313285 using Super =
1328413286 DestructedTypeVisitor<DiagNonTrivalCUnionDestructedTypeVisitor, void>;
1328513287
13286- DiagNonTrivalCUnionDestructedTypeVisitor(
13287- QualType OrigTy, SourceLocation OrigLoc,
13288- Sema::NonTrivialCUnionContext UseContext, Sema &S)
13288+ DiagNonTrivalCUnionDestructedTypeVisitor(QualType OrigTy,
13289+ SourceLocation OrigLoc,
13290+ NonTrivialCUnionContext UseContext,
13291+ Sema &S)
1328913292 : OrigTy(OrigTy), OrigLoc(OrigLoc), UseContext(UseContext), S(S) {}
1329013293
1329113294 void visitWithKind(QualType::DestructionKind DK, QualType QT,
@@ -13341,7 +13344,7 @@ struct DiagNonTrivalCUnionDestructedTypeVisitor
1334113344 // non-trivial C union.
1334213345 QualType OrigTy;
1334313346 SourceLocation OrigLoc;
13344- Sema:: NonTrivialCUnionContext UseContext;
13347+ NonTrivialCUnionContext UseContext;
1334513348 Sema &S;
1334613349};
1334713350
@@ -13350,8 +13353,7 @@ struct DiagNonTrivalCUnionCopyVisitor
1335013353 using Super = CopiedTypeVisitor<DiagNonTrivalCUnionCopyVisitor, false, void>;
1335113354
1335213355 DiagNonTrivalCUnionCopyVisitor(QualType OrigTy, SourceLocation OrigLoc,
13353- Sema::NonTrivialCUnionContext UseContext,
13354- Sema &S)
13356+ NonTrivialCUnionContext UseContext, Sema &S)
1335513357 : OrigTy(OrigTy), OrigLoc(OrigLoc), UseContext(UseContext), S(S) {}
1335613358
1335713359 void visitWithKind(QualType::PrimitiveCopyKind PCK, QualType QT,
@@ -13415,7 +13417,7 @@ struct DiagNonTrivalCUnionCopyVisitor
1341513417 // non-trivial C union.
1341613418 QualType OrigTy;
1341713419 SourceLocation OrigLoc;
13418- Sema:: NonTrivialCUnionContext UseContext;
13420+ NonTrivialCUnionContext UseContext;
1341913421 Sema &S;
1342013422};
1342113423
@@ -14214,8 +14216,8 @@ void Sema::ActOnUninitializedDecl(Decl *RealDecl) {
1421414216 if (!Var->isInvalidDecl() && DefKind != VarDecl::DeclarationOnly &&
1421514217 Var->getType().hasNonTrivialToPrimitiveDefaultInitializeCUnion())
1421614218 checkNonTrivialCUnion(Var->getType(), Var->getLocation(),
14217- NTCUC_DefaultInitializedObject, NTCUK_Init);
14218-
14219+ NonTrivialCUnionContext::DefaultInitializedObject,
14220+ NTCUK_Init);
1421914221
1422014222 switch (DefKind) {
1422114223 case VarDecl::Definition:
@@ -15487,7 +15489,8 @@ ParmVarDecl *Sema::CheckParameter(DeclContext *DC, SourceLocation StartLoc,
1548715489 if (New->getType().hasNonTrivialToPrimitiveDestructCUnion() ||
1548815490 New->getType().hasNonTrivialToPrimitiveCopyCUnion())
1548915491 checkNonTrivialCUnion(New->getType(), New->getLocation(),
15490- NTCUC_FunctionParam, NTCUK_Destruct|NTCUK_Copy);
15492+ NonTrivialCUnionContext::FunctionParam,
15493+ NTCUK_Destruct | NTCUK_Copy);
1549115494
1549215495 // Parameter declarators cannot be interface types. All ObjC objects are
1549315496 // passed by reference.
0 commit comments