From bec42c848ddc0eb525d1a3c63ba3f65961848f2f Mon Sep 17 00:00:00 2001 From: Erik Pilkington Date: Wed, 7 Mar 2018 04:29:33 +0000 Subject: [PATCH] [demangler] Fix a mistake in r326797. Thanks to Nico Weber for pointing this out! llvm-svn: 326871 --- libcxxabi/src/cxa_demangle.cpp | 4 ++-- libcxxabi/test/test_demangle.pass.cpp | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libcxxabi/src/cxa_demangle.cpp b/libcxxabi/src/cxa_demangle.cpp index d0362dc..ffd887a 100644 --- a/libcxxabi/src/cxa_demangle.cpp +++ b/libcxxabi/src/cxa_demangle.cpp @@ -4788,8 +4788,8 @@ Node *Db::parse() { Node *Encoding = parseEncoding(); if (Encoding == nullptr || !consumeIf("_block_invoke")) return nullptr; - consumeIf('_'); - if (parseNumber().empty()) + bool RequireNumber = consumeIf('_'); + if (parseNumber().empty() && RequireNumber) return nullptr; if (numLeft() != 0) return nullptr; diff --git a/libcxxabi/test/test_demangle.pass.cpp b/libcxxabi/test/test_demangle.pass.cpp index b54f8d3..ef2821c 100644 --- a/libcxxabi/test/test_demangle.pass.cpp +++ b/libcxxabi/test/test_demangle.pass.cpp @@ -29716,6 +29716,8 @@ const char* cases[][2] = // ABI tags can apply to built-in substitutions. {"_Z1fSsB1XS_", "f(std::string[abi:X], std::string[abi:X])"}, + + {"___Z10blocksNRVOv_block_invoke", "invocation function for block in blocksNRVO()"}, }; const unsigned N = sizeof(cases) / sizeof(cases[0]); -- 2.7.4