llvm-undname: More no-op changes to increase test coverage

- Add test coverage around invalid anon namespaces and
  for error paths in demanglePrimitiveType() and in
  demangleFullyQualifiedTypeName()

- Use DEMANGLE_UNREACHABLE in two more unreachable places

llvm-svn: 362514
This commit is contained in:
Nico Weber 2019-06-04 15:38:00 +00:00
parent 7f3135037d
commit c1a0e6fe6b
2 changed files with 30 additions and 6 deletions

View File

@ -238,10 +238,10 @@ demanglePointerCVQualifiers(StringView &MangledName) {
case 'S':
return std::make_pair(Qualifiers(Q_Const | Q_Volatile),
PointerAffinity::Pointer);
default:
assert(false && "Ty is not a pointer type!");
}
return std::make_pair(Q_None, PointerAffinity::Pointer);
// This function is only called if isPointerType() returns true,
// and it only returns true for the six cases listed above.
DEMANGLE_UNREACHABLE;
}
StringView Demangler::copyString(StringView Borrowed) {
@ -1694,7 +1694,7 @@ CallingConv Demangler::demangleCallingConvention(StringView &MangledName) {
}
StorageClass Demangler::demangleVariableStorageClass(StringView &MangledName) {
assert(std::isdigit(MangledName.front()));
assert(MangledName.front() >= '0' && MangledName.front() <= '4');
switch (MangledName.popFront()) {
case '0':
@ -1708,8 +1708,7 @@ StorageClass Demangler::demangleVariableStorageClass(StringView &MangledName) {
case '4':
return StorageClass::FunctionLocalStatic;
}
Error = true;
return StorageClass::None;
DEMANGLE_UNREACHABLE;
}
std::pair<Qualifiers, bool>

View File

@ -249,3 +249,28 @@
; CHECK-EMPTY:
; CHECK-NEXT: ?x@@3PEAY02$$CRHEA
; CHECK-NEXT: error: Invalid mangled name
?foo@@3_
; CHECK-EMPTY:
; CHECK-NEXT: ?foo@@3_
; CHECK-NEXT: error: Invalid mangled name
?foo@@3_XA
; CHECK-EMPTY:
; CHECK-NEXT: ?foo@@3_XA
; CHECK-NEXT: error: Invalid mangled name
?foo@@3Vbar
; CHECK-EMPTY:
; CHECK-NEXT: ?foo@@3Vbar
; CHECK-NEXT: error: Invalid mangled name
?foo@@3Vbar@
; CHECK-EMPTY:
; CHECK-NEXT: ?foo@@3Vbar@
; CHECK-NEXT: error: Invalid mangled name
?foo@?A
; CHECK-EMPTY:
; CHECK-NEXT: ?foo@?A
; CHECK-NEXT: error: Invalid mangled name