aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Support/RISCVAttributes.cpp
diff options
context:
space:
mode:
authorMehdi Amini <joker.eph@gmail.com>2021-07-15 23:52:44 +0000
committerMehdi Amini <joker.eph@gmail.com>2021-07-16 07:38:16 +0000
commit76374573ce829b083b95b74937a11e9b91f8f45f (patch)
treed3d4858038abe40a2eb763e04e6c93f8902691af /llvm/lib/Support/RISCVAttributes.cpp
parent8d051d854619956de633047409149cdab1e3319a (diff)
downloadllvm-76374573ce829b083b95b74937a11e9b91f8f45f.zip
llvm-76374573ce829b083b95b74937a11e9b91f8f45f.tar.gz
llvm-76374573ce829b083b95b74937a11e9b91f8f45f.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.cpp9
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;
+}