Lines Matching defs:DC
46 static bool isLocalContainerContext(const DeclContext *DC) {
47 return isa<FunctionDecl>(DC) || isa<ObjCMethodDecl>(DC) || isa<BlockDecl>(DC);
162 const DeclContext *DC = getEffectiveDeclContext(ND);
163 discriminator = ++Discriminator[std::make_pair(DC, ND->getIdentifier())];
207 const DeclContext *getEffectiveParentContext(const DeclContext *DC) {
208 return getEffectiveDeclContext(cast<Decl>(DC));
405 bool isStdNamespace(const DeclContext *DC);
515 void mangleUnqualifiedName(GlobalDecl GD, const DeclContext *DC,
517 mangleUnqualifiedName(GD, cast<NamedDecl>(GD.getDecl())->getDeclName(), DC,
521 const DeclContext *DC, unsigned KnownArity,
523 void mangleUnscopedName(GlobalDecl GD, const DeclContext *DC,
525 void mangleUnscopedTemplateName(GlobalDecl GD, const DeclContext *DC,
543 void mangleNestedName(GlobalDecl GD, const DeclContext *DC,
552 void manglePrefix(const DeclContext *DC, bool NoFunction=false);
686 const DeclContext *DC = D->getDeclContext();
687 if (isa<CapturedDecl>(DC) || isa<OMPDeclareReductionDecl>(DC) ||
688 isa<OMPDeclareMapperDecl>(DC)) {
689 return getEffectiveDeclContext(cast<Decl>(DC));
707 return DC->getRedeclContext();
788 const DeclContext *DC = getEffectiveDeclContext(D);
790 if (DC->isFunctionOrMethod() && D->hasLinkage())
791 while (!DC->isFileContext())
792 DC = getEffectiveParentContext(DC);
793 if (DC->isTranslationUnit() && D->getFormalLinkage() != Linkage::Internal &&
970 bool CXXNameMangler::isStdNamespace(const DeclContext *DC) {
971 if (!DC->isNamespace())
974 return isStd(cast<NamespaceDecl>(DC));
1045 const DeclContext *DC = Context.getEffectiveDeclContext(D);
1046 while (!DC->isNamespace() && !DC->isTranslationUnit()) {
1047 if (isLocalContainerContext(DC))
1049 D = cast<Decl>(DC);
1050 DC = Context.getEffectiveDeclContext(D);
1063 const DeclContext *DC = Context.getEffectiveDeclContext(ND);
1070 if (isLocalContainerContext(DC) && ND->hasLinkage() && !IsLambda)
1071 while (!DC->isNamespace() && !DC->isTranslationUnit())
1072 DC = Context.getEffectiveParentContext(DC);
1079 assert(!isa<LinkageSpecDecl>(DC) && "context cannot be LinkageSpecDecl");
1088 if (isLocalContainerContext(DC)) {
1093 if (DC->isTranslationUnit() || isStdNamespace(DC)) {
1097 mangleUnscopedTemplateName(TD, DC, AdditionalAbiTags);
1102 mangleUnscopedName(GD, DC, AdditionalAbiTags);
1106 mangleNestedName(GD, DC, AdditionalAbiTags);
1148 const DeclContext *DC = Context.getEffectiveDeclContext(TD);
1150 if (DC->isTranslationUnit() || isStdNamespace(DC)) {
1151 mangleUnscopedTemplateName(TD, DC, nullptr);
1158 void CXXNameMangler::mangleUnscopedName(GlobalDecl GD, const DeclContext *DC,
1163 assert(!isa<LinkageSpecDecl>(DC) && "unskipped LinkageSpecDecl");
1164 if (isStdNamespace(DC))
1167 mangleUnqualifiedName(GD, DC, AdditionalAbiTags);
1171 GlobalDecl GD, const DeclContext *DC, const AbiTagList *AdditionalAbiTags) {
1184 mangleUnscopedName(GD, DC, AdditionalAbiTags);
1186 mangleUnscopedName(GD.getWithDecl(ND->getTemplatedDecl()), DC,
1463 GlobalDecl GD, DeclarationName Name, const DeclContext *DC,
1469 // ::= [<module-name>] DC <source-name>* E
1471 if (ND && DC && DC->isFileContext())
1493 // <unqualified-name> ::= DC <source-name>* E
1496 Out << "DC";
1657 : Context.getAnonymousStructId(TD, dyn_cast<FunctionDecl>(DC));
1772 const DeclContext *DC,
1799 manglePrefix(DC, NoFunction);
1800 mangleUnqualifiedName(GD, DC, AdditionalAbiTags);
1834 static GlobalDecl getParentOfLocalEntity(const DeclContext *DC) {
1840 if (auto *CD = dyn_cast<CXXConstructorDecl>(DC))
1842 else if (auto *DD = dyn_cast<CXXDestructorDecl>(DC))
1845 GD = GlobalDecl(cast<FunctionDecl>(DC));
1859 const DeclContext *DC = Context.getEffectiveDeclContext(RD ? RD : D);
1866 if (const ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(DC))
1868 else if (const BlockDecl *BD = dyn_cast<BlockDecl>(DC))
1871 mangleFunctionEncoding(getParentOfLocalEntity(DC));
1907 mangleUnqualifiedName(RD, DC, AdditionalAbiTags);
1938 mangleUnqualifiedName(GD, DC, AdditionalAbiTags);
1957 const DeclContext *DC = Context.getEffectiveDeclContext(Block);
1958 if (isLocalContainerContext(DC)) {
1965 manglePrefix(DC);
2060 const DeclContext *DC = Context.getEffectiveDeclContext(Concept);
2063 else if (DC->isTranslationUnit() || isStdNamespace(DC))
2064 mangleUnscopedName(Concept, DC, nullptr);
2066 mangleNestedName(Concept, DC, nullptr);
2189 void CXXNameMangler::manglePrefix(const DeclContext *DC, bool NoFunction) {
2197 assert(!isa<LinkageSpecDecl>(DC) && "prefix cannot be LinkageSpecDecl");
2199 if (DC->isTranslationUnit())
2202 if (NoFunction && isLocalContainerContext(DC))
2205 const NamedDecl *ND = cast<NamedDecl>(DC);
2218 const DeclContext *DC = Context.getEffectiveDeclContext(ND);
2219 manglePrefix(DC, NoFunction);
2220 mangleUnqualifiedName(ND, DC, nullptr);
2272 const DeclContext *DC = Context.getEffectiveDeclContext(ND);
2273 manglePrefix(DC, NoFunction);
2275 mangleUnqualifiedName(GD, DC, nullptr);
2277 mangleUnqualifiedName(GD.getWithDecl(ND->getTemplatedDecl()), DC,
2318 const auto *DC = Context.getEffectiveDeclContext(ND);
2319 manglePrefix(DC, NoFunction);
2320 mangleUnqualifiedName(ND, DC, nullptr);