From patchwork Tue Aug 10 17:41:50 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Patch: fix demangler crash Date: Tue, 10 Aug 2010 07:41:50 -0000 From: Tom Tromey X-Patchwork-Id: 61402 Message-Id: To: gcc-patches@gcc.gnu.org This patch comes from http://sourceware.org/bugzilla/show_bug.cgi?id=11572 The demangler crashes on a certain input; I verified this on the compile farm. With this patch, the demangler does not crash. I also ran test-demangle under valgrind and didn't see any reports. I am not 100% certain that the new output is correct. I would appreciate it if somebody knowledgeable about lambdas could look at this. Ok to commit? Tom 2010-08-10 James Lyon http://sourceware.org/bugzilla/show_bug.cgi?id=11572 * cp-demangle.c (d_find_pack): Add case for DEMANGLE_COMPONENT_LAMBDA. * testsuite/demangle-expected: Add regression test. diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index d2d15e9..39c8cc0 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -3480,6 +3480,7 @@ d_find_pack (struct d_print_info *dpi, case DEMANGLE_COMPONENT_PACK_EXPANSION: return NULL; + case DEMANGLE_COMPONENT_LAMBDA: case DEMANGLE_COMPONENT_NAME: case DEMANGLE_COMPONENT_OPERATOR: case DEMANGLE_COMPONENT_BUILTIN_TYPE: diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected index 15a0fe7..0085564 100644 --- a/libiberty/testsuite/demangle-expected +++ b/libiberty/testsuite/demangle-expected @@ -4052,3 +4052,8 @@ prot.lock.update --format=gnu-v3 DFA DFA +# +# http://sourceware.org/bugzilla/show_bug.cgi?id=11572 +--format=auto +_ZN3Psi7VariantIIcPKcEE5visitIIRZN11VariantTest9TestVisit11test_methodEvEUlS2_E0_RZNS6_11test_methodEvEUlcE1_RZNS6_11test_methodEvEUlNS_4NoneEE_EEENS_13VariantDetail19SelectVisitorResultIIDpT_EE4typeEDpOSG_ +Psi::VariantDetail::SelectVisitorResult::type Psi::Variant::visit((VariantTest::TestVisit::test_method()::{lambda(Psi::None)#1}&&&)...)