diff options
author | Ziqing Luo <ziqing@udel.edu> | 2023-02-08 14:06:37 -0800 |
---|---|---|
committer | Ziqing Luo <ziqing@udel.edu> | 2023-02-08 14:12:03 -0800 |
commit | 829bcb06ec43ab4b56b95ff040ec9d36feeaf06a (patch) | |
tree | 6608c7c245a389295ba0591e5dbf84194314ce94 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | a1507668807e6108c12ffecf3740cb339b15018d (diff) | |
download | llvm-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