Index: include/llvm/IR/User.h =================================================================== --- include/llvm/IR/User.h +++ include/llvm/IR/User.h @@ -72,8 +72,7 @@ void growHungoffUses(unsigned N, bool IsPhi = false); public: - ~User() override { - } + LLVM_NO_SANITIZE_ATTRIBUTE ~User() override {} /// \brief Free memory allocated for User and Use objects. void operator delete(void *Usr); /// \brief Placement delete - required by std, but never called. Index: include/llvm/Support/Compiler.h =================================================================== --- include/llvm/Support/Compiler.h +++ include/llvm/Support/Compiler.h @@ -318,6 +318,14 @@ # define LLVM_FUNCTION_NAME __func__ #endif +/// \macro LLVM_NO_SANITIZE_ATTRIBUTE +/// \brief Skip memory sanitization for this function. +#ifdef MEMORY_SANITIZER +# define LLVM_NO_SANITIZE_ATTRIBUTE __attribute__((no_sanitize_memory)) +#else +# define LLVM_NO_SANITIZE_ATTRIBUTE +#endif + /// \macro LLVM_MEMORY_SANITIZER_BUILD /// \brief Whether LLVM itself is built with MemorySanitizer instrumentation. #if __has_feature(memory_sanitizer)