summaryrefslogtreecommitdiffstats
path: root/llvm/lib/DebugInfo/CodeView/RecordName.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/DebugInfo/CodeView/RecordName.cpp')
-rw-r--r--llvm/lib/DebugInfo/CodeView/RecordName.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/llvm/lib/DebugInfo/CodeView/RecordName.cpp b/llvm/lib/DebugInfo/CodeView/RecordName.cpp
index 4e17e9e5193..e6fd7cd3d28 100644
--- a/llvm/lib/DebugInfo/CodeView/RecordName.cpp
+++ b/llvm/lib/DebugInfo/CodeView/RecordName.cpp
@@ -167,13 +167,6 @@ Error TypeNameComputer::visitKnownRecord(CVType &CVR, PointerRecord &Ptr) {
StringRef Class = Types.getTypeName(MI.getContainingType());
Name = formatv("{0} {1}::*", Pointee, Class);
} else {
- if (Ptr.isConst())
- Name.append("const ");
- if (Ptr.isVolatile())
- Name.append("volatile ");
- if (Ptr.isUnaligned())
- Name.append("__unaligned ");
-
Name.append(Types.getTypeName(Ptr.getReferentType()));
if (Ptr.getMode() == PointerMode::LValueReference)
@@ -182,6 +175,17 @@ Error TypeNameComputer::visitKnownRecord(CVType &CVR, PointerRecord &Ptr) {
Name.append("&&");
else if (Ptr.getMode() == PointerMode::Pointer)
Name.append("*");
+
+ // Qualifiers in pointer records apply to the pointer, not the pointee, so
+ // they go on the right.
+ if (Ptr.isConst())
+ Name.append(" const");
+ if (Ptr.isVolatile())
+ Name.append(" volatile");
+ if (Ptr.isUnaligned())
+ Name.append(" __unaligned");
+ if (Ptr.isRestrict())
+ Name.append(" __restrict");
}
return Error::success();
}
OpenPOWER on IntegriCloud