summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--clang/docs/ItaniumMangleAbiTags.rst17
-rw-r--r--clang/docs/index.rst1
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
OpenPOWER on IntegriCloud