Rollback of commit "Repress sanitization on User dtor."
authorNaomi Musgrave <nmusgrave@google.com>
Mon, 31 Aug 2015 21:06:08 +0000 (21:06 +0000)
committerNaomi Musgrave <nmusgrave@google.com>
Mon, 31 Aug 2015 21:06:08 +0000 (21:06 +0000)
This would have suppressed bug 24578, about use-after-
destroy on User and MDNode. Rolled back suppression for
the sake of code cleanliness, in preferance for bug
tracking to keep track of this issue.

This reverts commit 6ff2baabc4625d5b0a8dccf76aa0f72d930ea6c0.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@246484 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IR/User.h
include/llvm/Support/Compiler.h
lib/IR/Metadata.cpp
lib/IR/User.cpp

index 160f32819b049617cad3dbae4bb73444dfd18439..93614fab5759ba4cda8a639e9045b21096e11e0f 100644 (file)
@@ -72,7 +72,8 @@ protected:
   void growHungoffUses(unsigned N, bool IsPhi = false);
 
 public:
-  ~User() override {}
+  ~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 bd197e2308cb251d994e466bae4103d8c17109b7..9f98bc398fec0b195bc7ca8753740ee26b4f88df 100644 (file)
 #if __has_feature(memory_sanitizer)
 # define LLVM_MEMORY_SANITIZER_BUILD 1
 # include <sanitizer/msan_interface.h>
-# define LLVM_NO_SANITIZE_MEMORY_ATTRIBUTE __attribute__((no_sanitize_memory))
 #else
 # define LLVM_MEMORY_SANITIZER_BUILD 0
 # define __msan_allocated_memory(p, size)
 # define __msan_unpoison(p, size)
-# define LLVM_NO_SANITIZE_MEMORY_ATTRIBUTE
 #endif
 
 /// \macro LLVM_ADDRESS_SANITIZER_BUILD
index 51548a82576e54966a5cbfa2c9b122068addd04d..7d8c352374316d47fe56956e4f18e6aee71b83da 100644 (file)
@@ -401,9 +401,7 @@ void *MDNode::operator new(size_t Size, unsigned NumOps) {
   return Ptr;
 }
 
-// Repress memory sanitization, due to use-after-destroy by operator
-// delete. Bug report 24578 identifies this issue.
-LLVM_NO_SANITIZE_MEMORY_ATTRIBUTE void MDNode::operator delete(void *Mem) {
+void MDNode::operator delete(void *Mem) {
   MDNode *N = static_cast<MDNode *>(Mem);
   size_t OpSize = N->NumOperands * sizeof(MDOperand);
   OpSize = RoundUpToAlignment(OpSize, llvm::alignOf<uint64_t>());
index b64580ce043acf87fab30f1ae4b71a63b834cdeb..522722d701bac5b92c68892a8bad6ec2a1bc7014 100644 (file)
@@ -118,9 +118,7 @@ void *User::operator new(size_t Size) {
 //                         User operator delete Implementation
 //===----------------------------------------------------------------------===//
 
-// Repress memory sanitization, due to use-after-destroy by operator
-// delete. Bug report 24578 identifies this issue.
-LLVM_NO_SANITIZE_MEMORY_ATTRIBUTE void User::operator delete(void *Usr) {
+void User::operator delete(void *Usr) {
   // Hung off uses use a single Use* before the User, while other subclasses
   // use a Use[] allocated prior to the user.
   User *Obj = static_cast<User *>(Usr);