aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorZiqing Luo <ziqing@udel.edu>2023-02-08 14:06:37 -0800
committerZiqing Luo <ziqing@udel.edu>2023-02-08 14:12:03 -0800
commit829bcb06ec43ab4b56b95ff040ec9d36feeaf06a (patch)
tree6608c7c245a389295ba0591e5dbf84194314ce94 /clang/lib/Frontend/CompilerInvocation.cpp
parenta1507668807e6108c12ffecf3740cb339b15018d (diff)
downloadllvm-829bcb06ec43ab4b56b95ff040ec9d36feeaf06a.zip
llvm-829bcb06ec43ab4b56b95ff040ec9d36feeaf06a.tar.gz
llvm-829bcb06ec43ab4b56b95ff040ec9d36feeaf06a.tar.bz2
[-Wunsafe-buffer-usage] Add unsafe buffer checking opt-out pragmas
Add a pair of clang pragmas: - `#pragma clang unsafe_buffer_usage begin` and - `#pragma clang unsafe_buffer_usage end`, which specify the start and end of an (unsafe buffer checking) opt-out region, respectively. Behaviors of opt-out regions conform to the following rules: - No nested nor overlapped opt-out regions are allowed. One cannot start an opt-out region with `... unsafe_buffer_usage begin` but never close it with `... unsafe_buffer_usage end`. Mis-use of the pragmas will be warned. - Warnings raised from unsafe buffer operations inside such an opt-out region will always be suppressed. This behavior CANNOT be changed by `clang diagnostic` pragmas or command-line flags. - Warnings raised from unsafe operations outside of such opt-out regions may be reported on declarations inside opt-out regions. These warnings are NOT suppressed. - An un-suppressed unsafe operation warning may be attached with notes. These notes are NOT suppressed as well regardless of whether they are in opt-out regions. The implementation maintains a separate sequence of location pairs representing opt-out regions in `Preprocessor`. The `UnsafeBufferUsage` analyzer reads the region sequence to check if an unsafe operation is in an opt-out region. If it is, discard the warning raised from the operation immediately. This is a re-land after I reverting it at 9aa00c8a306561c4e3ddb09058e66bae322a0769. The compilation error should be resolved. Reviewed by: NoQ Differential revision: https://reviews.llvm.org/D140179
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions