From 936f16c17bff39e45afce2e33eb13564082c4b8c Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Tue, 20 Mar 2018 20:43:12 +0000 Subject: [PATCH] [format] Initialize regex lazily No need to pay for this on program startup, and also no need to destroy it on process end. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@328041 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Format/NamespaceEndCommentsFixer.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/Format/NamespaceEndCommentsFixer.cpp b/lib/Format/NamespaceEndCommentsFixer.cpp index df99bb2e13..ee11959af3 100644 --- a/lib/Format/NamespaceEndCommentsFixer.cpp +++ b/lib/Format/NamespaceEndCommentsFixer.cpp @@ -27,13 +27,6 @@ namespace { // Short namespaces don't need an end comment. static const int kShortNamespaceMaxLines = 1; -// Matches a valid namespace end comment. -// Valid namespace end comments don't need to be edited. -static llvm::Regex kNamespaceCommentPattern = - llvm::Regex("^/[/*] *(end (of )?)? *(anonymous|unnamed)? *" - "namespace( +([a-zA-Z0-9:_]+))?\\.? *(\\*/)?$", - llvm::Regex::IgnoreCase); - // Computes the name of a namespace given the namespace token. // Returns "" for anonymous namespace. std::string computeName(const FormatToken *NamespaceTok) { @@ -67,8 +60,15 @@ bool hasEndComment(const FormatToken *RBraceTok) { bool validEndComment(const FormatToken *RBraceTok, StringRef NamespaceName) { assert(hasEndComment(RBraceTok)); const FormatToken *Comment = RBraceTok->Next; + + // Matches a valid namespace end comment. + // Valid namespace end comments don't need to be edited. + static llvm::Regex *const NamespaceCommentPattern = + new llvm::Regex("^/[/*] *(end (of )?)? *(anonymous|unnamed)? *" + "namespace( +([a-zA-Z0-9:_]+))?\\.? *(\\*/)?$", + llvm::Regex::IgnoreCase); SmallVector Groups; - if (kNamespaceCommentPattern.match(Comment->TokenText, &Groups)) { + if (NamespaceCommentPattern->match(Comment->TokenText, &Groups)) { StringRef NamespaceNameInComment = Groups.size() > 5 ? Groups[5] : ""; // Anonymous namespace comments must not mention a namespace name. if (NamespaceName.empty() && !NamespaceNameInComment.empty()) -- 2.40.0