diff options
Diffstat (limited to 'clang/lib/CodeGen')
| -rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp index e5db4e52b4a..57b1c4b4db1 100644 --- a/clang/lib/CodeGen/CodeGenFunction.cpp +++ b/clang/lib/CodeGen/CodeGenFunction.cpp @@ -846,8 +846,14 @@ void CodeGenFunction::StartFunction(GlobalDecl GD, if (D) { // Apply the no_sanitize* attributes to SanOpts. - for (auto Attr : D->specific_attrs<NoSanitizeAttr>()) - SanOpts.Mask &= ~Attr->getMask(); + for (auto Attr : D->specific_attrs<NoSanitizeAttr>()) { + SanitizerMask mask = Attr->getMask(); + SanOpts.Mask &= ~mask; + if (mask & SanitizerKind::Address) + SanOpts.set(SanitizerKind::KernelAddress, false); + if (mask & SanitizerKind::KernelAddress) + SanOpts.set(SanitizerKind::Address, false); + } } // Apply sanitizer attributes to the function. |

