diff options
author | Mehdi Amini <joker.eph@gmail.com> | 2021-07-15 23:52:44 +0000 |
---|---|---|
committer | Mehdi Amini <joker.eph@gmail.com> | 2021-07-16 03:33:20 +0000 |
commit | 42f588f39c5ce6f521e3709b8871d1fdd076292f (patch) | |
tree | 5ad9009fe09e82045e3a57cf39167e223ab00a27 /llvm/lib/Support/RISCVAttributes.cpp | |
parent | b4c93ece8e4f6e98a15daca10c8a3db33cf8c195 (diff) | |
download | llvm-42f588f39c5ce6f521e3709b8871d1fdd076292f.zip llvm-42f588f39c5ce6f521e3709b8871d1fdd076292f.tar.gz llvm-42f588f39c5ce6f521e3709b8871d1fdd076292f.tar.bz2 |
Use ManagedStatic and lazy initialization of cl::opt in libSupport to make it free of global initializer
We can build it with -Werror=global-constructors now. This helps
in situation where libSupport is embedded as a shared library,
potential with dlopen/dlclose scenario, and when command-line
parsing or other facilities may not be involved. Avoiding the
implicit construction of these cl::opt can avoid double-registration
issues and other kind of behavior.
Reviewed By: lattner, jpienaar
Differential Revision: https://reviews.llvm.org/D105959
Diffstat (limited to 'llvm/lib/Support/RISCVAttributes.cpp')
-rw-r--r-- | llvm/lib/Support/RISCVAttributes.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/llvm/lib/Support/RISCVAttributes.cpp b/llvm/lib/Support/RISCVAttributes.cpp index 201048e..9e62976 100644 --- a/llvm/lib/Support/RISCVAttributes.cpp +++ b/llvm/lib/Support/RISCVAttributes.cpp @@ -11,7 +11,7 @@ using namespace llvm; using namespace llvm::RISCVAttrs; -static const TagNameItem tagData[] = { +static constexpr TagNameItem tagData[] = { {STACK_ALIGN, "Tag_stack_align"}, {ARCH, "Tag_arch"}, {UNALIGNED_ACCESS, "Tag_unaligned_access"}, @@ -20,6 +20,7 @@ static const TagNameItem tagData[] = { {PRIV_SPEC_REVISION, "Tag_priv_spec_revision"}, }; -const TagNameMap llvm::RISCVAttrs::RISCVAttributeTags(tagData, - sizeof(tagData) / - sizeof(TagNameItem)); +constexpr TagNameMap RISCVAttributeTags{tagData}; +const TagNameMap &llvm::RISCVAttrs::getRISCVAttributeTags() { + return RISCVAttributeTags; +} |