* cp-demangle.c (cplus_demangle_operators): Add li.
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Mar 2012 23:19:06 +0000 (23:19 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 7 Mar 2012 23:19:06 +0000 (23:19 +0000)
(d_unqualified_name): Handle it specially.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@185082 138bc75d-0d04-0410-961f-82ee72b054a4

libiberty/ChangeLog
libiberty/cp-demangle.c
libiberty/testsuite/demangle-expected

index 5f492cc..97bdfed 100644 (file)
@@ -1,3 +1,8 @@
+2012-03-07  Jason Merrill  <jason@redhat.com>
+
+       * cp-demangle.c (cplus_demangle_operators): Add li.
+       (d_unqualified_name): Handle it specially.
+
 2012-01-26  Jakub Jelinek  <jakub@redhat.com>
 
        * make-relative-prefix.c (make_relative_prefix_1): Avoid warning
index 18b84a1..2b3d182 100644 (file)
@@ -1419,7 +1419,12 @@ d_unqualified_name (struct d_info *di)
 
       ret = d_operator_name (di);
       if (ret != NULL && ret->type == DEMANGLE_COMPONENT_OPERATOR)
-       di->expansion += sizeof "operator" + ret->u.s_operator.op->len - 2;
+       {
+         di->expansion += sizeof "operator" + ret->u.s_operator.op->len - 2;
+         if (!strcmp (ret->u.s_operator.op->code, "li"))
+           ret = d_make_comp (di, DEMANGLE_COMPONENT_UNARY, ret,
+                              d_source_name (di));
+       }
       return ret;
     }
   else if (peek == 'C' || peek == 'D')
@@ -1596,6 +1601,7 @@ const struct demangle_operator_info cplus_demangle_operators[] =
   { "ix", NL ("[]"),        2 },
   { "lS", NL ("<<="),       2 },
   { "le", NL ("<="),        2 },
+  { "li", NL ("operator\"\" "), 1 },
   { "ls", NL ("<<"),        2 },
   { "lt", NL ("<"),         2 },
   { "mI", NL ("-="),        2 },
index 408c4f4..036c481 100644 (file)
@@ -4072,6 +4072,9 @@ decltype (g({parm#1}, {})) f1<int>(int)
 --format=gnu-v3
 _Z2f1IiEDTnw_T_ilEES0_
 decltype (new int{}) f1<int>(int)
+--format=gnu-v3
+_Zli2_wPKc
+operator"" _w(char const*)
 #
 # Ada (GNAT) tests.
 #