From 5d4e7c089b08fc023779c2b2c4cc2a43bc58e3f3 Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Mon, 30 Jan 2017 18:32:46 +0000 Subject: [PATCH] [AST] Give TemplateArgumentLoc a constexpr ctor. This removes the thread-safe static from clang::TemplateTemplateParmDecl::getDefaultArgument() const::None llvm-svn: 293523 --- clang/include/clang/AST/TemplateBase.h | 11 ++++------- clang/lib/AST/TemplateBase.cpp | 4 ---- 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/clang/include/clang/AST/TemplateBase.h b/clang/include/clang/AST/TemplateBase.h index 3dd3e9d5efed..84fbcda6e087 100644 --- a/clang/include/clang/AST/TemplateBase.h +++ b/clang/include/clang/AST/TemplateBase.h @@ -119,10 +119,7 @@ private: public: /// \brief Construct an empty, invalid template argument. - TemplateArgument() { - TypeOrValue.Kind = Null; - TypeOrValue.V = 0; - } + constexpr TemplateArgument() : TypeOrValue({Null, 0}) {} /// \brief Construct a template type argument. TemplateArgument(QualType T, bool isNullPtr = false) { @@ -388,8 +385,8 @@ private: }; public: - TemplateArgumentLocInfo(); - + constexpr TemplateArgumentLocInfo() : Template({nullptr, nullptr, 0, 0}) {} + TemplateArgumentLocInfo(TypeSourceInfo *TInfo) : Declarator(TInfo) {} TemplateArgumentLocInfo(Expr *E) : Expression(E) {} @@ -433,7 +430,7 @@ class TemplateArgumentLoc { TemplateArgumentLocInfo LocInfo; public: - TemplateArgumentLoc() {} + constexpr TemplateArgumentLoc() {} TemplateArgumentLoc(const TemplateArgument &Argument, TemplateArgumentLocInfo Opaque) diff --git a/clang/lib/AST/TemplateBase.cpp b/clang/lib/AST/TemplateBase.cpp index 099f939c7a75..e4998c37a4ef 100644 --- a/clang/lib/AST/TemplateBase.cpp +++ b/clang/lib/AST/TemplateBase.cpp @@ -453,10 +453,6 @@ LLVM_DUMP_METHOD void TemplateArgument::dump() const { dump(llvm::errs()); } // TemplateArgumentLoc Implementation //===----------------------------------------------------------------------===// -TemplateArgumentLocInfo::TemplateArgumentLocInfo() { - memset((void*)this, 0, sizeof(TemplateArgumentLocInfo)); -} - SourceRange TemplateArgumentLoc::getSourceRange() const { switch (Argument.getKind()) { case TemplateArgument::Expression: