aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/AST/DeclarationName.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/AST/DeclarationName.cpp')
-rw-r--r--clang/lib/AST/DeclarationName.cpp16
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: