Skip to content
Snippets Groups Projects
Commit 2a54cbaf authored by Dmitry Polukhin's avatar Dmitry Polukhin
Browse files

NFC fix documentation build by rL263015

This time I hope it will fix the build for real.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@263052 91177308-0d34-0410-b5e6-96231b3b80d8
parent 32a22c2d
No related branches found
No related tags found
No related merge requests found
...@@ -33,15 +33,18 @@ the same <substitution> the <unqualified-name> is. ...@@ -33,15 +33,18 @@ the same <substitution> the <unqualified-name> is.
They are mangled as: They are mangled as:
.. code-block:: none
<abi-tags> ::= <abi-tag>* # sort by name <abi-tags> ::= <abi-tag>* # sort by name
<abi-tag> ::= B <tag source-name> <abi-tag> ::= B <tag source-name>
Example: Example:
.. code-block:: c++
__attribute__((abi_tag("test"))) __attribute__((abi_tag("test")))
void Func(); void Func();
// gets mangled as: _Z4FuncB4testv (prettified as `Func[abi:test]()`)
gets mangled as: _Z4FuncB4testv (prettified as `Func[abi:test]()`)
Active tags Active tags
=========== ===========
...@@ -52,6 +55,8 @@ enum), the explicit tags are the 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 For variables and functions, the active tags are the explicit tags plus any
"required tags" which are not in the "available tags" set: "required tags" which are not in the "available tags" set:
.. code-block:: none
derived-tags := (required-tags - available-tags) derived-tags := (required-tags - available-tags)
active-tags := explicit-tags + derived-tags active-tags := explicit-tags + derived-tags
...@@ -68,15 +73,16 @@ Otherwise the function requires any implicit or explicit tag used in the name ...@@ -68,15 +73,16 @@ Otherwise the function requires any implicit or explicit tag used in the name
for the return type. for the return type.
Example: Example:
.. code-block:: c++
namespace A { namespace A {
inline namespace B __attribute__((abi_tag)) { inline namespace B __attribute__((abi_tag)) {
struct C { int x; }; struct C { int x; };
} }
} }
A::C foo(); A::C foo(); // gets mangled as: _Z3fooB1Bv (prettified as `foo[abi:B]()`)
gets mangled as: _Z3fooB1Bv (prettified as `foo[abi:B]()`)
Required tags for a variable Required tags for a variable
============================ ============================
...@@ -99,4 +105,3 @@ in the type of a cast operator) are NOT available. ...@@ -99,4 +105,3 @@ in the type of a cast operator) are NOT available.
Example: a cast operator to std::string (which is Example: a cast operator to std::string (which is
std::__cxx11::basic_string<...>) will use 'cxx11' as an active tag, as it 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. required from the return type `std::string` but not available.
...@@ -76,6 +76,7 @@ Design Documents ...@@ -76,6 +76,7 @@ Design Documents
DriverInternals DriverInternals
PTHInternals PTHInternals
PCHInternals PCHInternals
ItaniumMangleAbiTags
Indices and tables Indices and tables
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment