MLIR  20.0.0git
Msan.h
Go to the documentation of this file.
1 //===- Msan.h - Utils related to the memory sanitizer ---------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file declares and defines macros related to msan.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef MLIR_EXECUTIONENGINE_MSAN_H
14 #define MLIR_EXECUTIONENGINE_MSAN_H
15 
16 // Memory sanitizer currently can't be enabled for the jit-compiled code, and
17 // to suppress msan warnings we need to unpoison pointers and pointed-to
18 // datastructures before they can be accessed.
19 
20 #ifndef __has_feature
21 #define __has_feature(x) 0
22 #endif
23 
24 #if __has_feature(memory_sanitizer) && !defined(MLIR_MEMORY_SANITIZER)
25 #define MLIR_MEMORY_SANITIZER
26 #endif
27 
28 #if defined(MLIR_MEMORY_SANITIZER)
29 #include <sanitizer/msan_interface.h>
30 #define MLIR_MSAN_MEMORY_IS_INITIALIZED(p, s) __msan_unpoison((p), (s))
31 #else // Memory sanitizer: OFF
32 #define MLIR_MSAN_MEMORY_IS_INITIALIZED(p, s)
33 #endif // MLIR_MEMORY_SANITIZER
34 
35 #endif // MLIR_EXECUTIONENGINE_MSAN_H