diff options
| -rw-r--r-- | clang/docs/ItaniumMangleAbiTags.rst | 17 | ||||
| -rw-r--r-- | clang/docs/index.rst | 1 |
2 files changed, 12 insertions, 6 deletions
diff --git a/clang/docs/ItaniumMangleAbiTags.rst b/clang/docs/ItaniumMangleAbiTags.rst index 6d50acad4b6..2d65031b70e 100644 --- a/clang/docs/ItaniumMangleAbiTags.rst +++ b/clang/docs/ItaniumMangleAbiTags.rst @@ -33,15 +33,18 @@ the same <substitution> the <unqualified-name> is. They are mangled as: +.. code-block:: none + <abi-tags> ::= <abi-tag>* # sort by name <abi-tag> ::= B <tag source-name> Example: +.. code-block:: c++ + __attribute__((abi_tag("test"))) void Func(); - - gets mangled as: _Z4FuncB4testv (prettified as `Func[abi:test]()`) + // gets mangled as: _Z4FuncB4testv (prettified as `Func[abi:test]()`) Active tags =========== @@ -52,6 +55,8 @@ enum), the explicit tags are the active tags. For variables and functions, the active tags are the explicit tags plus any "required tags" which are not in the "available tags" set: +.. code-block:: none + derived-tags := (required-tags - available-tags) active-tags := explicit-tags + derived-tags @@ -68,15 +73,16 @@ Otherwise the function requires any implicit or explicit tag used in the name for the return type. Example: + +.. code-block:: c++ + namespace A { inline namespace B __attribute__((abi_tag)) { struct C { int x; }; } } - A::C foo(); - - gets mangled as: _Z3fooB1Bv (prettified as `foo[abi:B]()`) + A::C foo(); // gets mangled as: _Z3fooB1Bv (prettified as `foo[abi:B]()`) Required tags for a variable ============================ @@ -99,4 +105,3 @@ in the type of a cast operator) are NOT available. Example: a cast operator to std::string (which is std::__cxx11::basic_string<...>) will use 'cxx11' as an active tag, as it is required from the return type `std::string` but not available. - diff --git a/clang/docs/index.rst b/clang/docs/index.rst index 81a15b8e188..6028fb8ec2f 100644 --- a/clang/docs/index.rst +++ b/clang/docs/index.rst @@ -76,6 +76,7 @@ Design Documents DriverInternals PTHInternals PCHInternals + ItaniumMangleAbiTags Indices and tables |

