Doesn't that create a temporary string object for each case? Though maybe short string optimization would avoid heap allocation?
On Fri, May 15, 2015 at 1:11 PM, Peter Collingbourne <[email protected]> wrote: > Author: pcc > Date: Fri May 15 15:11:18 2015 > New Revision: 237475 > > URL: http://llvm.org/viewvc/llvm-project?rev=237475&view=rev > Log: > Use llvm::StringSwitch<std::string> to take advantage of implicit > asserting conversion to std::string. > > Modified: > cfe/trunk/lib/Sema/SemaDeclAttr.cpp > > Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=237475&r1=237474&r2=237475&view=diff > > ============================================================================== > --- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original) > +++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Fri May 15 15:11:18 2015 > @@ -4381,13 +4381,11 @@ static void handleNoSanitizeAttr(Sema &S > static void handleNoSanitizeSpecificAttr(Sema &S, Decl *D, > const AttributeList &Attr) { > std::string SanitizerName = > - llvm::StringSwitch<const char *>(Attr.getName()->getName()) > + llvm::StringSwitch<std::string>(Attr.getName()->getName()) > .Case("no_address_safety_analysis", "address") > .Case("no_sanitize_address", "address") > .Case("no_sanitize_thread", "thread") > - .Case("no_sanitize_memory", "memory") > - .Default(""); > - assert(!SanitizerName.empty()); > + .Case("no_sanitize_memory", "memory"); > D->addAttr(::new (S.Context) > NoSanitizeAttr(Attr.getRange(), S.Context, > &SanitizerName, 1, > Attr.getAttributeSpellingListIndex())); > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits > -- ~Craig
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
