Lines Matching refs:ECD
9395 if (auto *ECD = dyn_cast<EnumConstantDecl>(NonParmDecl)) in ActOnFunctionDeclarator() local
9396 TD = cast<EnumDecl>(ECD->getDeclContext()); in ActOnFunctionDeclarator()
17956 static bool ValidDuplicateEnum(EnumConstantDecl *ECD, EnumDecl *Enum) { in ValidDuplicateEnum() argument
17957 Expr *InitExpr = ECD->getInitExpr(); in ValidDuplicateEnum()
17983 if (cast<EnumDecl>(TagDecl::castFromDeclContext(ECD->getDeclContext())) != in ValidDuplicateEnum()
18025 EnumConstantDecl *ECD = cast_or_null<EnumConstantDecl>(Element); in CheckForDuplicateEnumValues() local
18029 if (!ECD) { in CheckForDuplicateEnumValues()
18034 if (ECD->getInitExpr()) in CheckForDuplicateEnumValues()
18038 EnumMap.insert({EnumConstantToKey(ECD), ECD}); in CheckForDuplicateEnumValues()
18047 EnumConstantDecl *ECD = cast<EnumConstantDecl>(Element); in CheckForDuplicateEnumValues() local
18048 if (!ValidDuplicateEnum(ECD, Enum)) in CheckForDuplicateEnumValues()
18051 auto Iter = EnumMap.find(EnumConstantToKey(ECD)); in CheckForDuplicateEnumValues()
18058 if (D == ECD) in CheckForDuplicateEnumValues()
18064 Vec->push_back(ECD); in CheckForDuplicateEnumValues()
18077 if (*Vec->begin() == ECD) in CheckForDuplicateEnumValues()
18080 Vec->push_back(ECD); in CheckForDuplicateEnumValues()
18095 for (auto *ECD : llvm::make_range(Vec->begin() + 1, Vec->end())) in CheckForDuplicateEnumValues() local
18096 S.Diag(ECD->getLocation(), diag::note_duplicate_element) in CheckForDuplicateEnumValues()
18097 << ECD << ECD->getInitVal().toString(10) in CheckForDuplicateEnumValues()
18098 << ECD->getSourceRange(); in CheckForDuplicateEnumValues()
18141 EnumConstantDecl *ECD = in ActOnEnumBody() local
18143 if (!ECD) continue; in ActOnEnumBody()
18145 ECD->setType(EnumType); in ActOnEnumBody()
18168 EnumConstantDecl *ECD = in ActOnEnumBody() local
18170 if (!ECD) continue; // Already issued a diagnostic. in ActOnEnumBody()
18172 const llvm::APSInt &InitVal = ECD->getInitVal(); in ActOnEnumBody()
18184 AllElementsInt = ECD->getType() == Context.IntTy; in ActOnEnumBody()
18285 auto *ECD = cast_or_null<EnumConstantDecl>(D); in ActOnEnumBody() local
18286 if (!ECD) continue; // Already issued a diagnostic. in ActOnEnumBody()
18295 llvm::APSInt InitVal = ECD->getInitVal(); in ActOnEnumBody()
18308 } else if (ECD->getType() == BestType) { in ActOnEnumBody()
18314 ECD->setType(EnumType); in ActOnEnumBody()
18325 ECD->setInitVal(InitVal); in ActOnEnumBody()
18328 if (ECD->getInitExpr() && in ActOnEnumBody()
18329 !Context.hasSameType(NewTy, ECD->getInitExpr()->getType())) in ActOnEnumBody()
18330 ECD->setInitExpr(ImplicitCastExpr::Create( in ActOnEnumBody()
18331 Context, NewTy, CK_IntegralCast, ECD->getInitExpr(), in ActOnEnumBody()
18337 ECD->setType(EnumType); in ActOnEnumBody()
18339 ECD->setType(NewTy); in ActOnEnumBody()
18349 EnumConstantDecl *ECD = cast_or_null<EnumConstantDecl>(D); in ActOnEnumBody() local
18350 if (!ECD) continue; // Already issued a diagnostic. in ActOnEnumBody()
18352 llvm::APSInt InitVal = ECD->getInitVal(); in ActOnEnumBody()
18355 Diag(ECD->getLocation(), diag::warn_flag_enum_constant_out_of_range) in ActOnEnumBody()
18356 << ECD << Enum; in ActOnEnumBody()