================ @@ -8710,3 +8710,103 @@ Declares that a function potentially allocates heap memory, and prevents any pot of ``nonallocating`` by the compiler. }]; } + +def WrapsDocs : Documentation { + let Category = DocCatField; + let Content = [{ +The ``wraps`` attribute can be used with type or variable declarations to +denote that arithmetic containing attributed types or variables have defined +overflow behavior. Specifically, the behavior is defined as being consistent +with two's complement wrap-around. For the purposes of sanitizers or warnings +that concern themselves with the definedness of integer arithmetic, they will +cease to instrument or warn about arithmetic that directly involves operands +attributed with the ``wraps`` attribute. + +The ``signed-integer-overflow``, ``unsigned-integer-overflow``, +``implicit-signed-integer-truncation`` and the ---------------- JustinStitt wrote:
The entire intention of `wraps` is to _disable_ instrumentation entirely. We never want a report or trap out of such expressions. Developers who have very intentional wrapping arithmetic should be able to delegate types as "wrapping" and move on with their day. Furthermore, most of the use of `no_wraps` is in conjunction with SSCLs to further control overflow behavior at the type-level. Sanitizer recovery modes remain separate from all of this. https://github.com/llvm/llvm-project/pull/115094 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits