[cxx-abi-dev] C++0x: Mangling of rvalue reference types

Doug Gregor doug.gregor at gmail.com
Mon Jul 2 14:42:54 UTC 2007


On 6/29/07, Daveed Vandevoorde <daveed at edg.com> wrote:
>
> On Jun 29, 2007, at 8:59 AM, Doug Gregor wrote:
>
> > On 6/29/07, Hommel Andreas-r58171 <andreas.hommel at freescale.com>
> > wrote:
> >> FWIW, the reference implementation in the Metrowerks compiler was
> >> using
> >> "O" to mangle rvalue refs.
> >
> > That's a strong argument. I'm perfectly happy with "O", then.

Mark, the 'O' patch for rvalue references is below. I can ping you in
a few days if you want to hold off before committing it.

  - Doug

--- orig-abi.html       2007-06-28 16:04:49.000000000 -0400
+++ abi.html    2007-06-29 10:37:51.000000000 -0400
@@ -3717,8 +3717,8 @@
                                   size_t* n,
                                   int* status);
 }
-
-</code></pre>
+</pre>
+</code>

 <ul>
 <p>
@@ -4147,14 +4147,15 @@
 cv-qualifiers and/or pointer, reference, complex, or imaginary types:

 <pre><font color=blue><code>
-  <type> ::= <CV-qualifiers> <type>
-        ::= P <type>        # pointer-to
-        ::= R <type>        # reference-to
-        ::= C <type>        # complex pair (C 2000)
-        ::= G <type>        # imaginary (C 2000)
-        ::= U <source-name> <type>       # vendor extended type qualifier
+  <type> ::= <CV-qualifiers> <type>
+        ::= P <type>     # pointer-to
+        ::= R <type>     # reference-to
+        ::= O <type>     # rvalue reference-to (C++0x)
+        ::= C <type>     # complex pair (C 2000)
+        ::= G <type>     # imaginary (C 2000)
+        ::= U <source-name> <type> # vendor extended type qualifier

-  <CV-qualifiers> ::= [r] [V] [K]   # restrict (C99), volatile, const
+  <CV-qualifiers> ::= [r] [V] [K]        # restrict (C99),
volatile, const

 </pre></font></code>

--- orig-abi-mangling.html      2007-07-02 09:56:47.000000000 -0400
+++ abi-mangling.html   2007-07-02 09:55:55.000000000 -0400
@@ -95,6 +95,7 @@
 <tr><td>oper</td> <td>o</td> <td> o </td> <td> Operator || </td> </tr>
 <tr><td>oper</td> <td>o</td> <td> r </td> <td> Operator | </td> </tr>
 <tr><td>oper</td> <td>o</td> <td> R </td> <td> Operator |= </td> </tr>
+<tr><td>type</td> <td>O</td> <td></td> <td> rvalue reference type
(C++0x) </td> </tr>
 <tr><td>oper</td> <td>p</td> <td> l </td> <td> Operator + </td> </tr>
 <tr><td>oper</td> <td>p</td> <td> L </td> <td> Operator += </td> </tr>
 <tr><td>oper</td> <td>p</td> <td> m </td> <td> Operator ->* </td> </tr>



More information about the cxx-abi-dev mailing list