Skip to content

Commit e9cecd6

Browse files
committed
Update docs
1 parent 0b71745 commit e9cecd6

File tree

1 file changed

+4
-21
lines changed

1 file changed

+4
-21
lines changed

clang/docs/TypeSanitizer.rst

Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,6 @@ Typical memory overhead introduced by TypeSanitizer is about **8x**. Runtime slo
2424
depending on how often the instrumented code relies on type aliasing. In the best case slowdown is
2525
**2x-3x**.
2626

27-
The compiler instrumentation also has an impact on code size and compilation overhead. There is an
28-
experimental :ref:`instrumentation outlining option<outlining_flag>` which can greatly reduce this
29-
but this may decrease runtime performance.
30-
3127
The TypeSanitizer Algorithm
3228
===========================
3329
For each TBAA type-access descriptor, encoded in LLVM IR using TBAA Metadata, the instrumentation
@@ -132,22 +128,13 @@ references to LLVM IR specific terms.
132128
Sanitizer features
133129
==================
134130

135-
.. _outlining_flag:
136-
137131
Instrumentation code outlining
138132
------------------------------
139133

140-
By default TypeSanitizer inlines the instrumentation code. This leads to increased
141-
binary size and compilation time. Using the clang flag
142-
``-fsanitize-type-outline-instrumentation`` (default: ``false``)
143-
forces all code instrumentation to be outlined. This reduces the size of the
144-
generated code and reduces compile-time overhead, but it also reduces runtime
145-
performance.
146-
147-
This outlined instrumentation is new. If you wish to verify that the outlined instrumentation
148-
is behaving in the same way as the inline instrumentation, you can force TypeSanitizer
149-
to use both types of instrumentation. You can use the clang flag
150-
``-fsanitize-type-verify-outlined-instrumentation`` (default: ``false``) to do this.
134+
By default TypeSanitizer inserts instrumentation through function calls. This may lead to a reduction in
135+
runtime performance. ``-fno-sanitize-type-outline-instrumentation`` (default: ``false``) forces all
136+
code instrumentation to be inlined. This will increase the size of the generated code and compiler
137+
overhead, but may improve the runtime performance of the resulting code.
151138

152139
``__has_feature(type_sanitizer)``
153140
------------------------------------
@@ -200,10 +187,6 @@ Limitations
200187
shadow memory for each byte of user memory.
201188
* There are transformation passes which run before TypeSanitizer. If these
202189
passes optimize out an aliasing violation, TypeSanitizer cannot catch it.
203-
* Currently, all instrumentation is inlined. This can result in a **15x**
204-
(on average) increase in generated file size, and **3x** to **7x** increase
205-
in compile time. In some documented cases this can cause the compiler to hang.
206-
There are plans to improve this in the future.
207190
* Codebases that use unions and struct-initialized variables can see incorrect
208191
results, as TypeSanitizer doesn't yet instrument these reliably.
209192
* Since Clang & LLVM's TBAA system is used to generate the checks used by the

0 commit comments

Comments
 (0)