diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2021-04-08 17:00:43 -0700 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2021-04-08 17:05:59 -0700 |
commit | 6dc432510f29bc7e4cf7b0dfbffdd19443295cc8 (patch) | |
tree | 26ffda4c7f1b4116a5593ef713f975ddbda5e2d0 | |
parent | e35afbe535f96086141f57a5ce7d679429b4405f (diff) | |
download | llvm-6dc432510f29bc7e4cf7b0dfbffdd19443295cc8.tar.gz |
Support: Use std::unique_ptr for SignpostEmitter::Impl, NFC, 3rd attempt
This reverts commit e35afbe535f96086141f57a5ce7d679429b4405f, reapplying
022ccedde8877e877b45e49641544b5e4fff0b42 and
e7ed5c920db3f537a85d962c1c918a1bb6de99fd.
- The first attempt missed defining `SignpostEmitterImpl`.
- The second attempt missed defining `llvm::SignpostEmitterImpl`.
Not sure how I failed to test both versions locally before; I thought
I'd turned the feature off via rerunning `cmake` but it must have been
stuck in place. This time I confirmed via `clang -E` that I was testing
both build configurations.
Original commit message:
Replace some manual memory management with std::unique_ptr.
Differential Revision: https://reviews.llvm.org/D100151
-rw-r--r-- | llvm/include/llvm/Support/Signposts.h | 4 | ||||
-rw-r--r-- | llvm/lib/Support/Signposts.cpp | 13 |
2 files changed, 7 insertions, 10 deletions
diff --git a/llvm/include/llvm/Support/Signposts.h b/llvm/include/llvm/Support/Signposts.h index 22b04893394e..d31f3c1e6eb5 100644 --- a/llvm/include/llvm/Support/Signposts.h +++ b/llvm/include/llvm/Support/Signposts.h @@ -18,6 +18,7 @@ #define LLVM_SUPPORT_SIGNPOSTS_H #include "llvm/ADT/StringRef.h" +#include <memory> namespace llvm { class SignpostEmitterImpl; @@ -25,8 +26,7 @@ class SignpostEmitterImpl; /// Manages the emission of signposts into the recording method supported by /// the OS. class SignpostEmitter { - /// Not using std::unique_ptr since some hosts need a definition. - SignpostEmitterImpl *Impl; + std::unique_ptr<SignpostEmitterImpl> Impl; public: SignpostEmitter(); diff --git a/llvm/lib/Support/Signposts.cpp b/llvm/lib/Support/Signposts.cpp index b277bb02e03a..37e16a99f46b 100644 --- a/llvm/lib/Support/Signposts.cpp +++ b/llvm/lib/Support/Signposts.cpp @@ -90,6 +90,9 @@ public: } }; } // end namespace llvm +#else +/// Definition necessary for use of std::unique_ptr in SignpostEmitter::Impl. +class llvm::SignpostEmitterImpl {}; #endif // if LLVM_SUPPORT_XCODE_SIGNPOSTS #if LLVM_SUPPORT_XCODE_SIGNPOSTS @@ -100,17 +103,11 @@ public: SignpostEmitter::SignpostEmitter() { #if HAVE_ANY_SIGNPOST_IMPL - Impl = new SignpostEmitterImpl(); -#else // if HAVE_ANY_SIGNPOST_IMPL - Impl = nullptr; + Impl = std::make_unique<SignpostEmitterImpl>(); #endif // if !HAVE_ANY_SIGNPOST_IMPL } -SignpostEmitter::~SignpostEmitter() { -#if HAVE_ANY_SIGNPOST_IMPL - delete Impl; -#endif // if HAVE_ANY_SIGNPOST_IMPL -} +SignpostEmitter::~SignpostEmitter() = default; bool SignpostEmitter::isEnabled() const { #if HAVE_ANY_SIGNPOST_IMPL |