Lines Matching defs:ND

62 static bool isLambda(const NamedDecl *ND) {
63 const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(ND);
96 bool isUniqueInternalLinkageDecl(const NamedDecl *ND) override;
139 bool getNextDiscriminator(const NamedDecl *ND, unsigned &disc) {
141 if (isLambda(ND))
145 if (const TagDecl *Tag = dyn_cast<TagDecl>(ND)) {
151 if (ND->isExternallyVisible()) {
152 unsigned discriminator = getASTContext().getManglingNumber(ND, isAux());
160 unsigned &discriminator = Uniquifier[ND];
162 const DeclContext *DC = getEffectiveDeclContext(ND);
163 discriminator = ++Discriminator[std::make_pair(DC, ND->getIdentifier())];
211 bool isInternalLinkageDecl(const NamedDecl *ND);
306 void write(raw_ostream &Out, const NamedDecl *ND,
308 ND = cast<NamedDecl>(ND->getCanonicalDecl());
309 if (!isa<FunctionDecl>(ND) && !isa<VarDecl>(ND)) {
313 if (const auto *NS = dyn_cast<NamespaceDecl>(ND)) {
324 if (const auto *AbiTag = ND->getAttr<AbiTagAttr>()) {
467 void mangleNameOrStandardSubstitution(const NamedDecl *ND);
474 bool mangleSubstitution(const NamedDecl *ND);
482 bool mangleStandardSubstitution(const NamedDecl *ND);
484 void addSubstitution(const NamedDecl *ND) {
485 ND = cast<NamedDecl>(ND->getCanonicalDecl());
487 addSubstitution(reinterpret_cast<uintptr_t>(ND));
512 void mangleModuleName(const NamedDecl *ND);
531 const NamedDecl *ND, const AbiTagList *AdditionalAbiTags = nullptr);
556 const NamedDecl *getClosurePrefix(const Decl *ND);
557 void mangleClosurePrefix(const NamedDecl *ND, bool NoFunction = false);
628 void writeAbiTags(const NamedDecl *ND,
710 bool ItaniumMangleContextImpl::isInternalLinkageDecl(const NamedDecl *ND) {
711 if (ND && ND->getFormalLinkage() == Linkage::Internal &&
712 !ND->isExternallyVisible() &&
713 getEffectiveDeclContext(ND)->isFileContext() &&
714 !ND->isInAnonymousNamespace())
721 const NamedDecl *ND) {
722 if (!NeedsUniqueInternalLinkageNames || !ND)
725 const auto *FD = dyn_cast<FunctionDecl>(ND);
734 if (isInternalLinkageDecl(ND))
803 void CXXNameMangler::writeAbiTags(const NamedDecl *ND,
806 AbiTags->write(Out, ND, DisableDerivedAbiTags ? nullptr : AdditionalAbiTags);
810 const NamedDecl *ND, const AbiTagList *AdditionalAbiTags) {
811 mangleSourceName(ND->getIdentifier());
812 writeAbiTags(ND, AdditionalAbiTags);
979 const NamedDecl *ND = cast<NamedDecl>(GD.getDecl());
981 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(ND)) {
990 dyn_cast<ClassTemplateSpecializationDecl>(ND)) {
997 dyn_cast<VarTemplateSpecializationDecl>(ND)) {
1011 const NamedDecl *ND = cast<NamedDecl>(GD.getDecl());
1012 if (const VarDecl *VD = dyn_cast<VarDecl>(ND)) {
1057 const NamedDecl *ND = cast<NamedDecl>(GD.getDecl());
1063 const DeclContext *DC = Context.getEffectiveDeclContext(ND);
1064 bool IsLambda = isLambda(ND);
1070 if (isLocalContainerContext(DC) && ND->hasLinkage() && !IsLambda)
1073 else if (GetLocalClassDecl(ND) &&
1083 if (const NamedDecl *PrefixND = getClosurePrefix(ND)) {
1109 void CXXNameMangler::mangleModuleName(const NamedDecl *ND) {
1110 if (ND->isExternallyVisible())
1111 if (Module *M = ND->getOwningModuleForLinkage())
1172 const TemplateDecl *ND = cast<TemplateDecl>(GD.getDecl());
1175 if (mangleSubstitution(ND))
1179 if (const auto *TTP = dyn_cast<TemplateTemplateParmDecl>(ND)) {
1183 } else if (isa<BuiltinTemplateDecl>(ND) || isa<ConceptDecl>(ND)) {
1186 mangleUnscopedName(GD.getWithDecl(ND->getTemplatedDecl()), DC,
1190 addSubstitution(ND);
1465 const NamedDecl *ND = cast_or_null<NamedDecl>(GD.getDecl());
1471 if (ND && DC && DC->isFileContext())
1472 mangleModuleName(ND);
1476 auto *FD = dyn_cast<FunctionDecl>(ND);
1477 auto *FTD = dyn_cast<FunctionTemplateDecl>(ND);
1490 if (auto *DD = dyn_cast<DecompositionDecl>(ND)) {
1500 writeAbiTags(ND, AdditionalAbiTags);
1504 if (auto *GD = dyn_cast<MSGuidDecl>(ND)) {
1514 if (auto *TPO = dyn_cast<TemplateParamObjectDecl>(ND)) {
1536 if (Context.isInternalLinkageDecl(ND))
1552 writeAbiTags(ND, AdditionalAbiTags);
1557 assert(ND && "mangling empty name without declaration");
1559 if (const NamespaceDecl *NS = dyn_cast<NamespaceDecl>(ND)) {
1567 if (const VarDecl *VD = dyn_cast<VarDecl>(ND)) {
1601 if (isa<ObjCContainerDecl>(ND))
1605 const TagDecl *TD = cast<TagDecl>(ND);
1681 cast<CXXConstructorDecl>(ND)->getInheritedConstructor()) {
1689 if (ND == Structor)
1703 writeAbiTags(ND, AdditionalAbiTags);
1708 if (ND == Structor)
1716 assert(ND);
1717 writeAbiTags(ND, AdditionalAbiTags);
1721 if (ND && Arity == UnknownArity) {
1722 Arity = cast<FunctionDecl>(ND)->getNumParams();
1725 if (const auto *MD = dyn_cast<CXXMethodDecl>(ND))
1733 writeAbiTags(ND, AdditionalAbiTags);
1775 const NamedDecl *ND = cast<NamedDecl>(GD.getDecl());
1782 if (const CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(ND)) {
1905 // equality ok because RD derived from ND above
1916 const NamedDecl *ND = cast<NamedDecl>(D);
1917 mangleNestedName(GD, Context.getEffectiveDeclContext(ND),
1941 if (const NamedDecl *ND = dyn_cast<NamedDecl>(RD ? RD : D)) {
1943 if (Context.getNextDiscriminator(ND, disc)) {
1976 const auto *ND = cast<NamedDecl>(Context);
1977 if (ND->getIdentifier()) {
1978 mangleSourceNameWithAbiTags(ND);
2205 const NamedDecl *ND = cast<NamedDecl>(DC);
2206 if (mangleSubstitution(ND))
2211 if (GlobalDecl TD = isTemplate(ND, TemplateArgs)) {
2214 } else if (const NamedDecl *PrefixND = getClosurePrefix(ND)) {
2216 mangleUnqualifiedName(ND, nullptr, nullptr);
2218 const DeclContext *DC = Context.getEffectiveDeclContext(ND);
2220 mangleUnqualifiedName(ND, DC, nullptr);
2223 addSubstitution(ND);
2258 const TemplateDecl *ND = cast<TemplateDecl>(GD.getDecl());
2265 if (mangleSubstitution(ND))
2269 if (const auto *TTP = dyn_cast<TemplateTemplateParmDecl>(ND)) {
2272 const DeclContext *DC = Context.getEffectiveDeclContext(ND);
2274 if (isa<BuiltinTemplateDecl>(ND) || isa<ConceptDecl>(ND))
2277 mangleUnqualifiedName(GD.getWithDecl(ND->getTemplatedDecl()), DC,
2281 addSubstitution(ND);
2284 const NamedDecl *CXXNameMangler::getClosurePrefix(const Decl *ND) {
2289 if (auto *Block = dyn_cast<BlockDecl>(ND)) {
2291 } else if (auto *RD = dyn_cast<CXXRecordDecl>(ND)) {
2307 void CXXNameMangler::mangleClosurePrefix(const NamedDecl *ND, bool NoFunction) {
2310 if (mangleSubstitution(ND))
2314 if (GlobalDecl TD = isTemplate(ND, TemplateArgs)) {
2318 const auto *DC = Context.getEffectiveDeclContext(ND);
2320 mangleUnqualifiedName(ND, DC, nullptr);
2325 addSubstitution(ND);
3024 void CXXNameMangler::mangleNameOrStandardSubstitution(const NamedDecl *ND) {
3025 if (!mangleStandardSubstitution(ND))
3026 mangleName(ND);
6734 bool CXXNameMangler::mangleSubstitution(const NamedDecl *ND) {
6736 if (mangleStandardSubstitution(ND))
6739 ND = cast<NamedDecl>(ND->getCanonicalDecl());
6740 return mangleSubstitution(reinterpret_cast<uintptr_t>(ND));
6856 bool CXXNameMangler::mangleStandardSubstitution(const NamedDecl *ND) {
6858 if (const NamespaceDecl *NS = dyn_cast<NamespaceDecl>(ND)) {
6866 if (const ClassTemplateDecl *TD = dyn_cast<ClassTemplateDecl>(ND)) {
6888 dyn_cast<ClassTemplateSpecializationDecl>(ND)) {