[PATCH] demangler stuff

Carlo Wood carlo@alinoe.com
Thu Oct 30 15:08:00 GMT 2003


2003-10-30  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.

The main reason for this is that

int const volatile[3]

looks worse then

int const volatile [3]


Ok to commit?

-- 
Carlo Wood <carlo@alinoe.com>
-------------- next part --------------
? libiberty/autom4te.cache
? libstdc++-v3/.ChangeLog.swp
Index: libstdc++-v3/include/bits/demangle.h
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/include/bits/demangle.h,v
retrieving revision 1.7
diff -u -d -p -r1.7 demangle.h
--- libstdc++-v3/include/bits/demangle.h	14 Oct 2003 17:46:19 -0000	1.7
+++ libstdc++-v3/include/bits/demangle.h	30 Oct 2003 15:05:39 -0000
@@ -1414,14 +1414,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':
Index: libstdc++-v3/testsuite/demangle/abi_examples/10.cc
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/demangle/abi_examples/10.cc,v
retrieving revision 1.2
diff -u -d -p -r1.2 10.cc
--- libstdc++-v3/testsuite/demangle/abi_examples/10.cc	24 Jul 2003 21:08:01 -0000	1.2
+++ libstdc++-v3/testsuite/demangle/abi_examples/10.cc	30 Oct 2003 15:05:44 -0000
@@ -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;
 }
Index: libstdc++-v3/testsuite/demangle/regression/3111-2.cc
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/demangle/regression/3111-2.cc,v
retrieving revision 1.2
diff -u -d -p -r1.2 3111-2.cc
--- libstdc++-v3/testsuite/demangle/regression/3111-2.cc	24 Jul 2003 21:08:02 -0000	1.2
+++ libstdc++-v3/testsuite/demangle/regression/3111-2.cc	30 Oct 2003 15:05:44 -0000
@@ -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;
 }
Index: libstdc++-v3/testsuite/demangle/regression/7986-01.cc
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/demangle/regression/7986-01.cc,v
retrieving revision 1.2
diff -u -d -p -r1.2 7986-01.cc
--- libstdc++-v3/testsuite/demangle/regression/7986-01.cc	24 Jul 2003 21:08:02 -0000	1.2
+++ libstdc++-v3/testsuite/demangle/regression/7986-01.cc	30 Oct 2003 15:05:44 -0000
@@ -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;
 }
Index: libstdc++-v3/testsuite/demangle/regression/7986-07.cc
===================================================================
RCS file: /cvs/gcc/gcc/libstdc++-v3/testsuite/demangle/regression/7986-07.cc,v
retrieving revision 1.2
diff -u -d -p -r1.2 7986-07.cc
--- libstdc++-v3/testsuite/demangle/regression/7986-07.cc	24 Jul 2003 21:08:02 -0000	1.2
+++ libstdc++-v3/testsuite/demangle/regression/7986-07.cc	30 Oct 2003 15:05:44 -0000
@@ -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;


More information about the Libstdc++ mailing list