]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/52521 ([C++11] user defined literals and order of declaration)
authorJason Merrill <jason@redhat.com>
Wed, 7 Mar 2012 20:20:00 +0000 (15:20 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Wed, 7 Mar 2012 20:20:00 +0000 (15:20 -0500)
PR c++/52521
* mangle.c (write_literal_operator_name): The length comes after the
operator prefix.

From-SVN: r185079

gcc/cp/ChangeLog
gcc/cp/mangle.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cpp0x/udlit-mangle.C [new file with mode: 0644]

index bfd17d203f61c93f90cde2ca6ef2264d950b0e57..69677aea99ad4abd8dd7a01512f1ff0584575804 100644 (file)
@@ -1,3 +1,9 @@
+2012-03-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/52521
+       * mangle.c (write_literal_operator_name): The length comes after the
+       operator prefix.
+
 2012-03-05  Jakub Jelinek  <jakub@redhat.com>
 
        * pt.c (local_specializations): Change from htab_t into
index 1379e3b881e376a5af53ab843334c0e17fc05ce9..5d6beb5d5782674a62f03fc8b36334478f3e9cf4 100644 (file)
@@ -1292,18 +1292,16 @@ write_source_name (tree identifier)
 }
 
 /* Write a user-defined literal operator.
+          ::= li <source-name>    # "" <source-name>
    IDENTIFIER is an LITERAL_IDENTIFIER_NODE.  */
 
 static void
 write_literal_operator_name (tree identifier)
 {
   const char* suffix = UDLIT_OP_SUFFIX (identifier);
-  char* buffer = XNEWVEC (char, strlen (UDLIT_OP_MANGLED_PREFIX)
-                             + strlen (suffix) + 10);
-  sprintf (buffer, UDLIT_OP_MANGLED_FORMAT, suffix);
-
-  write_unsigned_number (strlen (buffer));
-  write_identifier (buffer);
+  write_identifier (UDLIT_OP_MANGLED_PREFIX);
+  write_unsigned_number (strlen (suffix));
+  write_identifier (suffix);
 }
 
 /* Encode 0 as _, and 1+ as n-1_.  */
index a00408c90a719ea743c284ad0210020b3ffb7f5d..83b7c664adc04c118f2e702b009e2d58b4785304 100644 (file)
@@ -1,3 +1,8 @@
+2012-03-07  Jason Merrill  <jason@redhat.com>
+
+       PR c++/52521
+       * g++.dg/cpp0x/udlit-mangle.C: New.
+
 2012-03-06  Pat Haugen <pthaugen@us.ibm.com>
 
        * gcc.dg/torture/va-arg-25.c: Fix typo for powerpc64-*-* check.
diff --git a/gcc/testsuite/g++.dg/cpp0x/udlit-mangle.C b/gcc/testsuite/g++.dg/cpp0x/udlit-mangle.C
new file mode 100644 (file)
index 0000000..6de31b6
--- /dev/null
@@ -0,0 +1,8 @@
+// PR c++/52521
+// { dg-options -std=c++0x }
+// { dg-final { scan-assembler "_Zli2_wPKc" } }
+
+int operator "" _w(const char*);
+int main() {
+  123_w;
+}