@@ -24,10 +24,6 @@ Typical memory overhead introduced by TypeSanitizer is about **8x**. Runtime slo
2424depending 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-
3127The TypeSanitizer Algorithm
3228===========================
3329For each TBAA type-access descriptor, encoded in LLVM IR using TBAA Metadata, the instrumentation
@@ -132,22 +128,13 @@ references to LLVM IR specific terms.
132128Sanitizer features
133129==================
134130
135- .. _outlining_flag :
136-
137131Instrumentation 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