diff --git a/llvm/include/llvm/Demangle/ItaniumDemangle.h b/llvm/include/llvm/Demangle/ItaniumDemangle.h --- a/llvm/include/llvm/Demangle/ItaniumDemangle.h +++ b/llvm/include/llvm/Demangle/ItaniumDemangle.h @@ -3885,6 +3885,18 @@ // but the exception to that exception is vendor extended types (Itanium C++ // ABI 5.9.1). Result = make(Res); + + // demangle builtin type transformations introduced in https://reviews.llvm.org/D116203 + if (consumeIf('I')) { + Node *BaseType = parseType(); + if (BaseType == nullptr) + return nullptr; + Result = make(nullptr, Result, makeNodeArray(&BaseType, &BaseType+1), + nullptr, Qualifiers::QualNone, + FunctionRefQual::FrefQualNone); + if (!consumeIf('E')) + return nullptr; + } break; } case 'D':