aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlo Wood <carlo@alinoe.com>2003-11-07 03:53:44 +0000
committerCarlo Wood <carlo@gcc.gnu.org>2003-11-07 03:53:44 +0000
commiteb622d37cfc1e4d1760aa1eba3e1ea3149f80469 (patch)
treed4d01d9a0e1c026e10245484a21100cb87167881
parent2215f7320e000a724667658ca60492a05629db86 (diff)
downloadgcc-eb622d37cfc1e4d1760aa1eba3e1ea3149f80469.zip
gcc-eb622d37cfc1e4d1760aa1eba3e1ea3149f80469.tar.gz
gcc-eb622d37cfc1e4d1760aa1eba3e1ea3149f80469.tar.bz2
demangle.h (qualifier_list<Allocator>::decode_qualifiers(string_type&, string_type&, bool member_function_pointer_qualifiers): Always seperate the '[' of an array type with a space from what is left of it...
* include/bits/demangle.h (qualifier_list<Allocator>::decode_qualifiers(string_type&, string_type&, bool member_function_pointer_qualifiers): Always seperate the '[' of an array type with a space from what is left of it, except when that is the closing bracket of another array dimension. From-SVN: r73328
-rw-r--r--libstdc++-v3/ChangeLog9
-rw-r--r--libstdc++-v3/include/bits/demangle.h11
-rw-r--r--libstdc++-v3/testsuite/demangle/abi_examples/10.cc2
-rw-r--r--libstdc++-v3/testsuite/demangle/regression/3111-2.cc2
-rw-r--r--libstdc++-v3/testsuite/demangle/regression/7986-01.cc2
-rw-r--r--libstdc++-v3/testsuite/demangle/regression/7986-07.cc2
6 files changed, 19 insertions, 9 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index 68c8571..1563a6d 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,6 +1,15 @@
2003-11-07 Carlo Wood <carlo@alinoe.com>
* include/bits/demangle.h
+ (qualifier_list<Allocator>::decode_qualifiers(string_type&,
+ string_type&, bool member_function_pointer_qualifiers):
+ Always seperate the '[' of an array type with a space from
+ what is left of it, except when that is the closing bracket
+ of another array dimension.
+
+2003-11-07 Carlo Wood <carlo@alinoe.com>
+
+ * include/bits/demangle.h
(qualifier_list<Allocator>::decode_qualifiers(string_type&,
string_type&, bool) const): Made const.
(qualifier_list<Allocator>::M_printing_suppressed): Added mutable.
diff --git a/libstdc++-v3/include/bits/demangle.h b/libstdc++-v3/include/bits/demangle.h
index 901eaa7..2858166 100644
--- a/libstdc++-v3/include/bits/demangle.h
+++ b/libstdc++-v3/include/bits/demangle.h
@@ -1380,7 +1380,7 @@ namespace __gnu_cxx
// <Q>[K|V|r]+ ==> [ const| volatile| restrict]+Q "KVr..."
// <Q>U<S> ==> SQ "U<S>..."
// <Q>M<C> ==> C::*Q "M<C>..." (<C> recurs.)
- // A<I> ==> [I] "A<I>..." (<I> recurs.)
+ // A<I> ==> [I] "A<I>..." (<I> recurs.)
// <Q>A<I> ==> (Q) [I] "A<I>..." (<I> recurs.)
// Note that when <Q> ends on an A<I2> then the brackets are omitted:
// A<I2>A<I> ==> [I2][I]
@@ -1454,14 +1454,15 @@ namespace __gnu_cxx
case 'A':
{
string_type index = (*iter).get_optional_type();
- if (++iter != M_qualifier_starts.rend()
- && (*iter).first_qualifier() != 'A')
+ if (++iter == M_qualifier_starts.rend())
+ postfix = " [" + index + "]" + postfix;
+ else if ((*iter).first_qualifier() == 'A')
+ postfix = "[" + index + "]" + postfix;
+ else
{
prefix += " (";
postfix = ") [" + index + "]" + postfix;
}
- else
- postfix = "[" + index + "]" + postfix;
break;
}
case 'M':
diff --git a/libstdc++-v3/testsuite/demangle/abi_examples/10.cc b/libstdc++-v3/testsuite/demangle/abi_examples/10.cc
index fc422a7..d639ca8 100644
--- a/libstdc++-v3/testsuite/demangle/abi_examples/10.cc
+++ b/libstdc++-v3/testsuite/demangle/abi_examples/10.cc
@@ -34,7 +34,7 @@ int main()
{ static int bar; };
int Foo<int[4]>::bar;
*/
- verify_demangle("_ZN3FooIA4_iE3barE", "Foo<int[4]>::bar");
+ verify_demangle("_ZN3FooIA4_iE3barE", "Foo<int [4]>::bar");
return 0;
}
diff --git a/libstdc++-v3/testsuite/demangle/regression/3111-2.cc b/libstdc++-v3/testsuite/demangle/regression/3111-2.cc
index 8897c50..42d50f4 100644
--- a/libstdc++-v3/testsuite/demangle/regression/3111-2.cc
+++ b/libstdc++-v3/testsuite/demangle/regression/3111-2.cc
@@ -32,7 +32,7 @@ int main()
// verify_demangle("_Z1fAszL_ZZNK1N1A1fEvE3foo_0E_i",
// "f(int[sizeof(N::A::f() const::foo())])");
verify_demangle("_Z1fAszL_ZZNK1N1A1fEvE3foo_0E_i",
- "f(int[sizeof(N::A::f() const::foo)])");
+ "f(int [sizeof(N::A::f() const::foo)])");
return 0;
}
diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-01.cc b/libstdc++-v3/testsuite/demangle/regression/7986-01.cc
index e864957..46551e7 100644
--- a/libstdc++-v3/testsuite/demangle/regression/7986-01.cc
+++ b/libstdc++-v3/testsuite/demangle/regression/7986-01.cc
@@ -27,7 +27,7 @@ int main()
{
using namespace __gnu_test;
// cplus-dem FAIL
- verify_demangle("_Z1fA37_iPS_", "f(int[37], int (*) [37])");
+ verify_demangle("_Z1fA37_iPS_", "f(int [37], int (*) [37])");
return 0;
}
diff --git a/libstdc++-v3/testsuite/demangle/regression/7986-07.cc b/libstdc++-v3/testsuite/demangle/regression/7986-07.cc
index 6a4dfb0..e035256 100644
--- a/libstdc++-v3/testsuite/demangle/regression/7986-07.cc
+++ b/libstdc++-v3/testsuite/demangle/regression/7986-07.cc
@@ -28,7 +28,7 @@ int main()
using namespace __gnu_test;
// cplus-dem FAIL
- verify_demangle("_Z3fooA30_A_i", "foo(int[30][])");
+ verify_demangle("_Z3fooA30_A_i", "foo(int [30][])");
return 0;