mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-01-25 10:48:14 +00:00
Make ManagedStatic constexpr constructible
Apparently it needs member initializers so that it can be constructed in a constexpr context. I explained my investigation of this in PR41367. llvm-svn: 357655
This commit is contained in:
parent
920f6c8163
commit
e9f2847b81
@ -37,13 +37,18 @@ class ManagedStaticBase {
|
||||
protected:
|
||||
// This should only be used as a static variable, which guarantees that this
|
||||
// will be zero initialized.
|
||||
mutable std::atomic<void *> Ptr;
|
||||
mutable void (*DeleterFn)(void*);
|
||||
mutable const ManagedStaticBase *Next;
|
||||
mutable std::atomic<void *> Ptr{nullptr};
|
||||
mutable void (*DeleterFn)(void *) = nullptr;
|
||||
mutable const ManagedStaticBase *Next = nullptr;
|
||||
|
||||
void RegisterManagedStatic(void *(*creator)(), void (*deleter)(void*)) const;
|
||||
|
||||
public:
|
||||
/// ManagedStaticBase must be constexpr constructed so that they can be
|
||||
/// accessed and constructed lazily during dynamic initilization of other
|
||||
/// global variables, such as cl::opt command line flags.
|
||||
constexpr ManagedStaticBase() = default;
|
||||
|
||||
/// isConstructed - Return true if this object has not been created yet.
|
||||
bool isConstructed() const { return Ptr != nullptr; }
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user