<div dir="ltr">And fixed again in r276703, thanks to Hans.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 25, 2016 at 2:58 PM, Michael Kuperstein <span dir="ltr"><<a href="mailto:mkuper@google.com" target="_blank">mkuper@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">And I broke it again with r276687. Looking into it.<br></div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 25, 2016 at 1:32 PM, Jordan Rose <span dir="ltr"><<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Oops, didn’t realize MSVC has different behavior here. Thanks, Michael, will fix.</div><span class="m_5470726807499393247HOEnZb"><font color="#888888"><div><br></div><div>Jordan</div></font></span><div><div class="m_5470726807499393247h5"><br><div><blockquote type="cite"><div>On Jul 25, 2016, at 13:24, Michael Kuperstein <<a href="mailto:mkuper@google.com" target="_blank">mkuper@google.com</a>> wrote:</div><br class="m_5470726807499393247m_2365224303295516936Apple-interchange-newline"><div><div dir="ltr">Hi Mike,<div><br></div><div>Already fixed in r276672. </div><div>The sanitizer bot is still red, but for an unrelated reason - any build that picked that fix up would have also picked up r276671 that apparently breaks StringSwitch.</div><div><br></div><div>Thanks,</div><div>  Michae</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 25, 2016 at 1:16 PM, Mike Aizatsky <span dir="ltr"><<a href="mailto:aizatsky@google.com" target="_blank">aizatsky@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Michael,<div><br></div><div>This broke sanitizer-windows bot:</div><div><br></div><div><a href="http://lab.llvm.org:8011/builders/sanitizer-windows/builds/26212" target="_blank">http://lab.llvm.org:8011/builders/sanitizer-windows/builds/26212</a><br></div><div><a href="http://lab.llvm.org:8011/builders/sanitizer-windows/builds/26212/steps/run%20tests/logs/stdio" target="_blank">http://lab.llvm.org:8011/builders/sanitizer-windows/builds/26212/steps/run%20tests/logs/stdio</a><br></div><div><br></div><div><pre style="font-family:'courier new',courier,monotype,monospace;font-size:inherit;line-height:normal"><span class="m_5470726807499393247m_2365224303295516936m_-3185482918015539035inbox-inbox-stdout">FAILED: lib/Transforms/Utils/CMakeFiles/LLVMTransformUtils.dir/SymbolRewriter.cpp.obj 
C:\PROGRA~2\MICROS~1.0\VC\bin\AMD64_~1\cl.exe   /nologo /TP -DGTEST_HAS_RTTI=0 -DUNICODE -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_DEBUG_POINTER_IMPL="" -D_HAS_EXCEPTIONS=0 -D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS -D_UNICODE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -Ilib\Transforms\Utils -IC:\b\slave\sanitizer-windows\llvm\lib\Transforms\Utils -Iinclude -IC:\b\slave\sanitizer-windows\llvm\include /DWIN32 /D_WINDOWS   /W4 -wd4141 -wd4146 -wd4180 -wd4244 -wd4258 -wd4267 -wd4291 -wd4345 -wd4351 -wd4355 -wd4456 -wd4457 -wd4458 -wd4459 -wd4503 -wd4624 -wd4722 -wd4800 -wd4100 -wd4127 -wd4512 -wd4505 -wd4610 -wd4510 -wd4702 -wd4245 -wd4706 -wd4310 -wd4701 -wd4703 -wd4389 -wd4611 -wd4805 -wd4204 -wd4577 -wd4091 -wd4592 -wd4319 -wd4324 -w14062 -we4238 /Zc:inline /Oi /Zc:rvalueCast /MD /O2 /Ob2   -UNDEBUG  /EHs-c- /GR- /showIncludes /Folib\Transforms\Utils\CMakeFiles\LLVMTransformUtils.dir\SymbolRewriter.cpp.obj /Fdlib\Transforms\Utils\CMakeFiles\LLVMTransformUtils.dir\ /FS -c C:\b\slave\sanitizer-windows\llvm\lib\Transforms\Utils\SymbolRewriter.cpp
C:\b\slave\sanitizer-windows\llvm\lib\Transforms\Utils\SymbolRewriter.cpp(365) : error C2668: 'llvm::make_unique' : ambiguous call to overloaded function
        C:\b\slave\sanitizer-windows\llvm\include\llvm/ADT/STLExtras.h(453): could be 'std::unique_ptr<`anonymous-namespace'::ExplicitRewriteFunctionDescriptor,std::default_delete<`anonymous-namespace'::ExplicitRewriteFunctionDescriptor>> llvm::make_unique<`anonymous-namespace'::ExplicitRewriteFunctionDescriptor,std::string&,std::string&,bool&>(std::string &,std::string &,bool &)'
        C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\memory(1637): or       'std::unique_ptr<`anonymous-namespace'::ExplicitRewriteFunctionDescriptor,std::default_delete<`anonymous-namespace'::ExplicitRewriteFunctionDescriptor>> std::make_unique<`anonymous-namespace'::ExplicitRewriteFunctionDescriptor,std::string&,std::string&,bool&>(std::string &,std::string &,bool &)' [found using argument-dependent lookup]
        while trying to match the argument list '(std::string, std::string, bool)'
C:\b\slave\sanitizer-windows\llvm\lib\Transforms\Utils\SymbolRewriter.cpp(368) : error C2668: 'llvm::make_unique' : ambiguous call to overloaded function
        C:\b\slave\sanitizer-windows\llvm\include\llvm/ADT/STLExtras.h(453): could be 'std::unique_ptr<`anonymous-namespace'::PatternRewriteFunctionDescriptor,std::default_delete<`anonymous-namespace'::PatternRewriteFunctionDescriptor>> llvm::make_unique<`anonymous-namespace'::PatternRewriteFunctionDescriptor,std::string&,std::string&>(std::string &,std::string &)'
        C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\memory(1637): or       'std::unique_ptr<`anonymous-namespace'::PatternRewriteFunctionDescriptor,std::default_delete<`anonymous-namespace'::PatternRewriteFunctionDescriptor>> std::make_unique<`anonymous-namespace'::PatternRewriteFunctionDescriptor,std::string&,std::string&>(std::string &,std::string &)' [found using argument-dependent lookup]
        while trying to match the argument list '(std::string, std::string)'
C:\b\slave\sanitizer-windows\llvm\lib\Transforms\Utils\SymbolRewriter.cpp(428) : error C2668: 'llvm::make_unique' : ambiguous call to overloaded function
        C:\b\slave\sanitizer-windows\llvm\include\llvm/ADT/STLExtras.h(453): could be 'std::unique_ptr<`anonymous-namespace'::ExplicitRewriteGlobalVariableDescriptor,std::default_delete<`anonymous-namespace'::ExplicitRewriteGlobalVariableDescriptor>> llvm::make_unique<`anonymous-namespace'::ExplicitRewriteGlobalVariableDescriptor,std::string&,std::string&,bool>(std::string &,std::string &,bool &&)'
        C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\memory(1637): or       'std::unique_ptr<`anonymous-namespace'::ExplicitRewriteGlobalVariableDescriptor,std::default_delete<`anonymous-namespace'::ExplicitRewriteGlobalVariableDescriptor>> std::make_unique<`anonymous-namespace'::ExplicitRewriteGlobalVariableDescriptor,std::string&,std::string&,bool>(std::string &,std::string &,bool &&)' [found using argument-dependent lookup]
        while trying to match the argument list '(std::string, std::string, bool)'
C:\b\slave\sanitizer-windows\llvm\lib\Transforms\Utils\SymbolRewriter.cpp(431) : error C2668: 'llvm::make_unique' : ambiguous call to overloaded function
        C:\b\slave\sanitizer-windows\llvm\include\llvm/ADT/STLExtras.h(453): could be 'std::unique_ptr<`anonymous-namespace'::PatternRewriteGlobalVariableDescriptor,std::default_delete<`anonymous-namespace'::PatternRewriteGlobalVariableDescriptor>> llvm::make_unique<`anonymous-namespace'::PatternRewriteGlobalVariableDescriptor,std::string&,std::string&>(std::string &,std::string &)'
        C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\memory(1637): or       'std::unique_ptr<`anonymous-namespace'::PatternRewriteGlobalVariableDescriptor,std::default_delete<`anonymous-namespace'::PatternRewriteGlobalVariableDescriptor>> std::make_unique<`anonymous-namespace'::PatternRewriteGlobalVariableDescriptor,std::string&,std::string&>(std::string &,std::string &)' [found using argument-dependent lookup]
        while trying to match the argument list '(std::string, std::string)'
C:\b\slave\sanitizer-windows\llvm\lib\Transforms\Utils\SymbolRewriter.cpp(491) : error C2668: 'llvm::make_unique' : ambiguous call to overloaded function
        C:\b\slave\sanitizer-windows\llvm\include\llvm/ADT/STLExtras.h(453): could be 'std::unique_ptr<`anonymous-namespace'::ExplicitRewriteNamedAliasDescriptor,std::default_delete<`anonymous-namespace'::ExplicitRewriteNamedAliasDescriptor>> llvm::make_unique<`anonymous-namespace'::ExplicitRewriteNamedAliasDescriptor,std::string&,std::string&,bool>(std::string &,std::string &,bool &&)'
        C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\memory(1637): or       'std::unique_ptr<`anonymous-namespace'::ExplicitRewriteNamedAliasDescriptor,std::default_delete<`anonymous-namespace'::ExplicitRewriteNamedAliasDescriptor>> std::make_unique<`anonymous-namespace'::ExplicitRewriteNamedAliasDescriptor,std::string&,std::string&,bool>(std::string &,std::string &,bool &&)' [found using argument-dependent lookup]
        while trying to match the argument list '(std::string, std::string, bool)'
C:\b\slave\sanitizer-windows\llvm\lib\Transforms\Utils\SymbolRewriter.cpp(494) : error C2668: 'llvm::make_unique' : ambiguous call to overloaded function
        C:\b\slave\sanitizer-windows\llvm\include\llvm/ADT/STLExtras.h(453): could be 'std::unique_ptr<`anonymous-namespace'::PatternRewriteNamedAliasDescriptor,std::default_delete<`anonymous-namespace'::PatternRewriteNamedAliasDescriptor>> llvm::make_unique<`anonymous-namespace'::PatternRewriteNamedAliasDescriptor,std::string&,std::string&>(std::string &,std::string &)'
        C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE\memory(1637): or       'std::unique_ptr<`anonymous-namespace'::PatternRewriteNamedAliasDescriptor,std::default_delete<`anonymous-namespace'::PatternRewriteNamedAliasDescriptor>> std::make_unique<`anonymous-namespace'::PatternRewriteNamedAliasDescriptor,std::string&,std::string&>(std::string &,std::string &)' [found using argument-dependent lookup]
        while trying to match the argument list '(std::string, std::string)'
</span></pre><br class="m_5470726807499393247m_2365224303295516936m_-3185482918015539035inbox-inbox-Apple-interchange-newline"></div><div><br></div></div><div class="m_5470726807499393247m_2365224303295516936HOEnZb"><div class="m_5470726807499393247m_2365224303295516936h5"><br><div class="gmail_quote"><div dir="ltr">On Mon, Jul 25, 2016 at 11:18 AM Michael Kuperstein via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: mkuper<br>
Date: Mon Jul 25 13:10:54 2016<br>
New Revision: 276668<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=276668&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=276668&view=rev</a><br>
Log:<br>
Don't use iplist in SymbolRewriter. NFC.<br>
<br>
There didn't appear to be a good reason to use iplist in this case, a regular<br>
list of unique_ptr works just as well.<br>
Change made in preparation to a new PM port (since iplist is not moveable).<br>
<br>
Modified:<br>
    llvm/trunk/include/llvm/Transforms/Utils/SymbolRewriter.h<br>
    llvm/trunk/lib/Transforms/Utils/SymbolRewriter.cpp<br>
<br>
Modified: llvm/trunk/include/llvm/Transforms/Utils/SymbolRewriter.h<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Utils/SymbolRewriter.h?rev=276668&r1=276667&r2=276668&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Transforms/Utils/SymbolRewriter.h?rev=276668&r1=276667&r2=276668&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/include/llvm/Transforms/Utils/SymbolRewriter.h (original)<br>
+++ llvm/trunk/include/llvm/Transforms/Utils/SymbolRewriter.h Mon Jul 25 13:10:54 2016<br>
@@ -30,12 +30,11 @@<br>
 //<br>
 //===----------------------------------------------------------------------===//<br>
<br>
-#ifndef LLVM_TRANSFORMS_UTILS_SYMBOL_REWRITER_H<br>
-#define LLVM_TRANSFORMS_UTILS_SYMBOL_REWRITER_H<br>
+#ifndef LLVM_TRANSFORMS_UTILS_SYMBOLREWRITER_H<br>
+#define LLVM_TRANSFORMS_UTILS_SYMBOLREWRITER_H<br>
<br>
-#include "llvm/ADT/ilist.h"<br>
-#include "llvm/ADT/ilist_node.h"<br>
 #include "llvm/IR/Module.h"<br>
+#include <list><br>
<br>
 namespace llvm {<br>
 class MemoryBuffer;<br>
@@ -59,7 +58,7 @@ namespace SymbolRewriter {<br>
 /// be rewritten or providing a (posix compatible) regular expression that will<br>
 /// select the symbols to rewrite.  This descriptor list is passed to the<br>
 /// SymbolRewriter pass.<br>
-class RewriteDescriptor : public ilist_node<RewriteDescriptor> {<br>
+class RewriteDescriptor {<br>
   RewriteDescriptor(const RewriteDescriptor &) = delete;<br>
<br>
   const RewriteDescriptor &<br>
@@ -86,7 +85,7 @@ private:<br>
   const Type Kind;<br>
 };<br>
<br>
-typedef iplist<RewriteDescriptor> RewriteDescriptorList;<br>
+typedef std::list<std::unique_ptr<RewriteDescriptor>> RewriteDescriptorList;<br>
<br>
 class RewriteMapParser {<br>
 public:<br>
@@ -110,43 +109,8 @@ private:<br>
 };<br>
 }<br>
<br>
-template <><br>
-struct ilist_traits<SymbolRewriter::RewriteDescriptor><br>
-    : public ilist_default_traits<SymbolRewriter::RewriteDescriptor> {<br>
-  mutable ilist_half_node<SymbolRewriter::RewriteDescriptor> Sentinel;<br>
-<br>
-public:<br>
-  // createSentinel is used to get a reference to a node marking the end of<br>
-  // the list.  Because the sentinel is relative to this instance, use a<br>
-  // non-static method.<br>
-  SymbolRewriter::RewriteDescriptor *createSentinel() const {<br>
-    // since i[p] lists always publicly derive from the corresponding<br>
-    // traits, placing a data member in this class will augment the<br>
-    // i[p]list.  Since the NodeTy is expected to publicly derive from<br>
-    // ilist_node<NodeTy>, there is a legal viable downcast from it to<br>
-    // NodeTy.  We use this trick to superpose i[p]list with a "ghostly"<br>
-    // NodeTy, which becomes the sentinel.  Dereferencing the sentinel is<br>
-    // forbidden (save the ilist_node<NodeTy>) so no one will ever notice<br>
-    // the superposition.<br>
-    return static_cast<SymbolRewriter::RewriteDescriptor *>(&Sentinel);<br>
-  }<br>
-  void destroySentinel(SymbolRewriter::RewriteDescriptor *) {}<br>
-<br>
-  SymbolRewriter::RewriteDescriptor *provideInitialHead() const {<br>
-    return createSentinel();<br>
-  }<br>
-<br>
-  SymbolRewriter::RewriteDescriptor *<br>
-  ensureHead(SymbolRewriter::RewriteDescriptor *&) const {<br>
-    return createSentinel();<br>
-  }<br>
-<br>
-  static void noteHead(SymbolRewriter::RewriteDescriptor *,<br>
-                       SymbolRewriter::RewriteDescriptor *) {}<br>
-};<br>
-<br>
 ModulePass *createRewriteSymbolsPass();<br>
 ModulePass *createRewriteSymbolsPass(SymbolRewriter::RewriteDescriptorList &);<br>
 }<br>
<br>
-#endif<br>
+#endif //LLVM_TRANSFORMS_UTILS_SYMBOLREWRITER_H<br>
<br>
Modified: llvm/trunk/lib/Transforms/Utils/SymbolRewriter.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SymbolRewriter.cpp?rev=276668&r1=276667&r2=276668&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SymbolRewriter.cpp?rev=276668&r1=276667&r2=276668&view=diff</a><br>
==============================================================================<br>
--- llvm/trunk/lib/Transforms/Utils/SymbolRewriter.cpp (original)<br>
+++ llvm/trunk/lib/Transforms/Utils/SymbolRewriter.cpp Mon Jul 25 13:10:54 2016<br>
@@ -361,9 +361,11 @@ parseRewriteFunctionDescriptor(yaml::Str<br>
   // TODO see if there is a more elegant solution to selecting the rewrite<br>
   // descriptor type<br>
   if (!Target.empty())<br>
-    DL->push_back(new ExplicitRewriteFunctionDescriptor(Source, Target, Naked));<br>
+    DL->push_back(<br>
+        make_unique<ExplicitRewriteFunctionDescriptor>(Source, Target, Naked));<br>
   else<br>
-    DL->push_back(new PatternRewriteFunctionDescriptor(Source, Transform));<br>
+    DL->push_back(<br>
+        make_unique<PatternRewriteFunctionDescriptor>(Source, Transform));<br>
<br>
   return true;<br>
 }<br>
@@ -421,11 +423,12 @@ parseRewriteGlobalVariableDescriptor(yam<br>
   }<br>
<br>
   if (!Target.empty())<br>
-    DL->push_back(new ExplicitRewriteGlobalVariableDescriptor(Source, Target,<br>
-                                                              /*Naked*/false));<br>
+    DL->push_back(<br>
+        make_unique<ExplicitRewriteGlobalVariableDescriptor>(Source, Target,<br>
+                                                             /*Naked*/ false));<br>
   else<br>
-    DL->push_back(new PatternRewriteGlobalVariableDescriptor(Source,<br>
-                                                             Transform));<br>
+    DL->push_back(<br>
+        make_unique<PatternRewriteGlobalVariableDescriptor>(Source, Transform));<br>
<br>
   return true;<br>
 }<br>
@@ -483,10 +486,12 @@ parseRewriteGlobalAliasDescriptor(yaml::<br>
   }<br>
<br>
   if (!Target.empty())<br>
-    DL->push_back(new ExplicitRewriteNamedAliasDescriptor(Source, Target,<br>
-                                                          /*Naked*/false));<br>
+    DL->push_back(<br>
+        make_unique<ExplicitRewriteNamedAliasDescriptor>(Source, Target,<br>
+                                                         /*Naked*/ false));<br>
   else<br>
-    DL->push_back(new PatternRewriteNamedAliasDescriptor(Source, Transform));<br>
+    DL->push_back(<br>
+        make_unique<PatternRewriteNamedAliasDescriptor>(Source, Transform));<br>
<br>
   return true;<br>
 }<br>
@@ -524,7 +529,7 @@ bool RewriteSymbols::runOnModule(Module<br>
<br>
   Changed = false;<br>
   for (auto &Descriptor : Descriptors)<br>
-    Changed |= Descriptor.performOnModule(M);<br>
+    Changed |= Descriptor->performOnModule(M);<br>
<br>
   return Changed;<br>
 }<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div></div></div><span class="m_5470726807499393247m_2365224303295516936HOEnZb"><font color="#888888"><div dir="ltr">-- <br></div><div data-smartmail="gmail_signature">Mike<br>Sent from phone</div>
</font></span></blockquote></div><br></div>
</div></blockquote></div><br></div></div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>