diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index 0a3ab05d506cb2482a59b4382434fce2eec1b06c..96b111af60d91645ea3e7c1257276c65b4f82448 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -3,6 +3,7 @@
 	PR other/16240
 	* cp-demangle.c (d_expr_primary): Check for a failure return from
 	cplus_demangle_type.
+	* testsuite/demangle-expected: Add test case.
 
 2004-05-31  Danny Smith  <dannysmith@users.sourceforge.net>
 
diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected
index 9a3f0b9da8d889522cd716e4ba33019d76ee37b7..d38ce33c830e06db5bd5b851afe5fbdd4f7881b6 100644
--- a/libiberty/testsuite/demangle-expected
+++ b/libiberty/testsuite/demangle-expected
@@ -3699,6 +3699,11 @@ _Z3fooIPA3_iEvRKT_
 void foo<int (*) [3]>(int (* const&) [3])
 foo<int (*) [3]>
 #
+# This used to crash the demangler--PR 16240
+--format=gnu-v3 --no-params
+_ZN13PatternDriver23StringScalarDeleteValueC1ERKNS_25ConflateStringScalarValueERKNS_25AbstractStringScalarValueERKNS_12TemplateEnumINS_12pdcomplementELZNS_16complement_namesEELZNS_14COMPLEMENTENUMEEEE
+_ZN13PatternDriver23StringScalarDeleteValueC1ERKNS_25ConflateStringScalarValueERKNS_25AbstractStringScalarValueERKNS_12TemplateEnumINS_12pdcomplementELZNS_16complement_namesEELZNS_14COMPLEMENTENUMEEEE
+PatternDriver::StringScalarDeleteValue::StringScalarDeleteValue
 # Test GNU V3 constructor and destructor identification.
 # 0 means it is not a constructor/destructor.
 # Other integers correspond to enum gnu_v3_{c,d}tor_kinds in demangle.h.