Home | History | Annotate | Download | only in AST

Lines Matching refs:ND

106 static bool isLambda(const NamedDecl *ND) {
107 const CXXRecordDecl *Record = dyn_cast<CXXRecordDecl>(ND);
163 bool getNextDiscriminator(const NamedDecl *ND, unsigned &disc) {
165 if (isLambda(ND))
169 if (const TagDecl *Tag = dyn_cast<TagDecl>(ND)) {
175 if (ND->isExternallyVisible()) {
176 unsigned discriminator = getASTContext().getManglingNumber(ND);
184 unsigned &discriminator = Uniquifier[ND];
186 const DeclContext *DC = getEffectiveDeclContext(ND);
187 discriminator = ++Discriminator[std::make_pair(DC, ND->getIdentifier())];
292 void mangleName(const NamedDecl *ND);
294 void mangleNameOrStandardSubstitution(const NamedDecl *ND);
298 bool mangleSubstitution(const NamedDecl *ND);
306 bool mangleStandardSubstitution(const NamedDecl *ND);
308 void addSubstitution(const NamedDecl *ND) {
309 ND = cast<NamedDecl>(ND->getCanonicalDecl());
311 addSubstitution(reinterpret_cast<uintptr_t>(ND));
328 void mangleUnqualifiedName(const NamedDecl *ND) {
329 mangleUnqualifiedName(ND, ND->getDeclName(), UnknownArity);
331 void mangleUnqualifiedName(const NamedDecl *ND, DeclarationName Name,
333 void mangleUnscopedName(const NamedDecl *ND);
334 void mangleUnscopedTemplateName(const TemplateDecl *ND);
341 void mangleNestedName(const NamedDecl *ND, const DeclContext *DC,
349 void mangleTemplatePrefix(const TemplateDecl *ND, bool NoFunction=false);
539 isTemplate(const NamedDecl *ND, const TemplateArgumentList *&TemplateArgs) {
541 if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(ND)){
550 dyn_cast<ClassTemplateSpecializationDecl>(ND)) {
557 dyn_cast<VarTemplateSpecializationDecl>(ND)) {
565 void CXXNameMangler::mangleName(const NamedDecl *ND) {
571 const DeclContext *DC = getEffectiveDeclContext(ND);
577 if (isLocalContainerContext(DC) && ND->hasLinkage() && !isLambda(ND))
580 else if (GetLocalClassDecl(ND)) {
581 mangleLocalName(ND);
590 if (const TemplateDecl *TD = isTemplate(ND, TemplateArgs)) {
596 mangleUnscopedName(ND);
601 mangleLocalName(ND);
605 mangleNestedName(ND, DC);
620 void CXXNameMangler::mangleUnscopedName(const NamedDecl *ND) {
624 if (isStdNamespace(IgnoreLinkageSpecDecls(getEffectiveDeclContext(ND))))
627 mangleUnqualifiedName(ND);
630 void CXXNameMangler::mangleUnscopedTemplateName(const TemplateDecl *ND) {
633 if (mangleSubstitution(ND))
638 = dyn_cast<TemplateTemplateParmDecl>(ND)) {
643 mangleUnscopedName(ND->getTemplatedDecl());
644 addSubstitution(ND);
1067 void CXXNameMangler::mangleUnqualifiedName(const NamedDecl *ND,
1082 if (ND && ND->getFormalLinkage() == InternalLinkage &&
1083 getEffectiveDeclContext(ND)->isFileContext())
1091 assert(ND && "mangling empty name without declaration");
1093 if (const NamespaceDecl *NS = dyn_cast<NamespaceDecl>(ND)) {
1101 if (const VarDecl *VD = dyn_cast<VarDecl>(ND)) {
1133 if (isa<ObjCContainerDecl>(ND))
1137 const TagDecl *TD = cast<TagDecl>(ND);
1188 if (ND == Structor)
1199 if (ND == Structor)
1217 if (ND) {
1218 Arity = cast<FunctionDecl>(ND)->getNumParams();
1223 if (isa<CXXMethodDecl>(ND))
1250 void CXXNameMangler::mangleNestedName(const NamedDecl *ND,
1259 if (const CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(ND)) {
1271 if (const TemplateDecl *TD = isTemplate(ND, TemplateArgs)) {
1277 mangleUnqualifiedName(ND);
1338 // equality ok because RD derived from ND above
1345 const NamedDecl *ND = cast<NamedDecl>(D);
1346 mangleNestedName(ND, getEffectiveDeclContext(ND), true /*NoFunction*/);
1368 if (const NamedDecl *ND = dyn_cast<NamedDecl>(RD ? RD : D)) {
1370 if (Context.getNextDiscriminator(ND, disc)) {
1505 const NamedDecl *ND = cast<NamedDecl>(DC);
1506 if (mangleSubstitution(ND))
1511 if (const TemplateDecl *TD = isTemplate(ND, TemplateArgs)) {
1515 manglePrefix(getEffectiveDeclContext(ND), NoFunction);
1516 mangleUnqualifiedName(ND);
1519 addSubstitution(ND);
1545 void CXXNameMangler::mangleTemplatePrefix(const TemplateDecl *ND,
1553 if (mangleSubstitution(ND))
1558 = dyn_cast<TemplateTemplateParmDecl>(ND)) {
1563 manglePrefix(getEffectiveDeclContext(ND), NoFunction);
1564 mangleUnqualifiedName(ND->getTemplatedDecl());
1565 addSubstitution(ND);
1917 void CXXNameMangler::mangleNameOrStandardSubstitution(const NamedDecl *ND) {
1918 if (!mangleStandardSubstitution(ND))
1919 mangleName(ND);
3452 bool CXXNameMangler::mangleSubstitution(const NamedDecl *ND) {
3454 if (mangleStandardSubstitution(ND))
3457 ND = cast<NamedDecl>(ND->getCanonicalDecl());
3458 return mangleSubstitution(reinterpret_cast<uintptr_t>(ND));
3555 bool CXXNameMangler::mangleStandardSubstitution(const NamedDecl *ND) {
3557 if (const NamespaceDecl *NS = dyn_cast<NamespaceDecl>(ND)) {
3564 if (const ClassTemplateDecl *TD = dyn_cast<ClassTemplateDecl>(ND)) {
3582 dyn_cast<ClassTemplateSpecializationDecl>(ND)) {