diff options
Diffstat (limited to 'clang/lib/AST/DeclarationName.cpp')
-rw-r--r-- | clang/lib/AST/DeclarationName.cpp | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/clang/lib/AST/DeclarationName.cpp b/clang/lib/AST/DeclarationName.cpp index 4eb11bc57e52..ecf676c9936d 100644 --- a/clang/lib/AST/DeclarationName.cpp +++ b/clang/lib/AST/DeclarationName.cpp @@ -17,6 +17,7 @@ #include "clang/AST/DeclBase.h" #include "clang/AST/DeclCXX.h" #include "clang/AST/DeclTemplate.h" +#include "clang/AST/OpenMPClause.h" #include "clang/AST/PrettyPrinter.h" #include "clang/AST/Type.h" #include "clang/AST/TypeLoc.h" @@ -138,8 +139,19 @@ void DeclarationName::print(raw_ostream &OS, const PrintingPolicy &Policy) const { switch (getNameKind()) { case DeclarationName::Identifier: - if (const IdentifierInfo *II = getAsIdentifierInfo()) - OS << II->getName(); + if (const IdentifierInfo *II = getAsIdentifierInfo()) { + StringRef Name = II->getName(); + // If this is a mangled OpenMP variant name we strip off the mangling for + // printing. It should not be visible to the user at all. + if (II->isMangledOpenMPVariantName()) { + std::pair<StringRef, StringRef> NameContextPair = + Name.split(getOpenMPVariantManglingSeparatorStr()); + OS << NameContextPair.first << "[" + << OMPTraitInfo(NameContextPair.second) << "]"; + } else { + OS << Name; + } + } return; case DeclarationName::ObjCZeroArgSelector: |