<div dir="ltr">Doesn't that create a temporary string object for each case? Though maybe short string optimization would avoid heap allocation?</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, May 15, 2015 at 1:11 PM, Peter Collingbourne <span dir="ltr"><<a href="mailto:peter@pcc.me.uk" target="_blank">peter@pcc.me.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: pcc<br>
Date: Fri May 15 15:11:18 2015<br>
New Revision: 237475<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=237475&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=237475&view=rev</a><br>
Log:<br>
Use llvm::StringSwitch<std::string> to take advantage of implicit asserting conversion to std::string.<br>
<br>
Modified:<br>
    cfe/trunk/lib/Sema/SemaDeclAttr.cpp<br>
<br>
Modified: cfe/trunk/lib/Sema/SemaDeclAttr.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=237475&r1=237474&r2=237475&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclAttr.cpp?rev=237475&r1=237474&r2=237475&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Sema/SemaDeclAttr.cpp (original)<br>
+++ cfe/trunk/lib/Sema/SemaDeclAttr.cpp Fri May 15 15:11:18 2015<br>
@@ -4381,13 +4381,11 @@ static void handleNoSanitizeAttr(Sema &S<br>
 static void handleNoSanitizeSpecificAttr(Sema &S, Decl *D,<br>
                                          const AttributeList &Attr) {<br>
   std::string SanitizerName =<br>
-      llvm::StringSwitch<const char *>(Attr.getName()->getName())<br>
+      llvm::StringSwitch<std::string>(Attr.getName()->getName())<br>
           .Case("no_address_safety_analysis", "address")<br>
           .Case("no_sanitize_address", "address")<br>
           .Case("no_sanitize_thread", "thread")<br>
-          .Case("no_sanitize_memory", "memory")<br>
-          .Default("");<br>
-  assert(!SanitizerName.empty());<br>
+          .Case("no_sanitize_memory", "memory");<br>
   D->addAttr(::new (S.Context)<br>
                  NoSanitizeAttr(Attr.getRange(), S.Context, &SanitizerName, 1,<br>
                                 Attr.getAttributeSpellingListIndex()));<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">~Craig</div>
</div>