<div dir="ltr">And looks like "-w" is needed to trigger this.</div><br><div class="gmail_quote"><div dir="ltr">On Wed, May 17, 2017 at 1:43 PM Vitaly Buka <<a href="mailto:vitalybuka@google.com">vitalybuka@google.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Tue, May 16, 2017 at 12:19 PM Richard Smith <<a href="mailto:richard@metafoo.co.uk" target="_blank">richard@metafoo.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On 16 May 2017 at 11:54, Vitaly Buka <span dir="ltr"><<a href="mailto:vitalybuka@google.com" class="m_-7390434941615284702cremed" target="_blank">vitalybuka@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">The patch breaks this test <a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/1349/steps/check-clang%20msan/logs/stdio" class="m_-7390434941615284702cremed" target="_blank">http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/1349/steps/check-clang%20msan/logs/stdio</a></div></blockquote><div><br></div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>Given the nature of this change, that's a surprise, but anything's possible. How sure are you that it was this change?</div></div></div></div><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div></div></div></div></blockquote><div><br></div></div></div><div dir="ltr"><div class="gmail_quote"><div>I bisected to the change locally.<br></div></div></div><div dir="ltr"><div class="gmail_quote"><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div>Script:</div><div>--</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm_build_msan/./bin/clang -cc1 -internal-isystem /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm_build_msan/lib/clang/5.0.0/include -nostdsysteminc -verify -fms-extensions -Wmicrosoft /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c</div><div>not /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm_build_msan/./bin/clang -cc1 -internal-isystem /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm_build_msan/lib/clang/5.0.0/include -nostdsysteminc -P -E -fms-extensions /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c | /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm_build_msan/./bin/FileCheck -strict-whitespace /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c</div><div>--</div><div>Exit Code: 1</div><div><br></div><div>Command Output (stderr):</div><div>--</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c:35:1: error: pasting formed '(baz', an invalid preprocessing token</div><div>bar(q) // expected-warning {{type specifier missing}} expected-error {{invalid preprocessing token}} expected-error {{parameter list without types}}</div><div>^</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c:34:20: note: expanded from macro 'bar'</div><div>#define bar(y) foo(##baz(y))</div><div>                   ^</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c:42:1: error: pasting formed '1a-', an invalid preprocessing token</div><div>collapse_spaces(1a, b2, 3c, d4) // expected-error 4 {{invalid preprocessing token}} expected-error {{expected function body}}</div><div>^</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c:41:43: note: expanded from macro 'collapse_spaces'</div><div>#define collapse_spaces(a, b, c, d) str(a ## - ## b ## - ## c ## d)</div><div>                                          ^</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c:42:1: error: pasting formed '-b2', an invalid preprocessing token</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c:41:48: note: expanded from macro 'collapse_spaces'</div><div>#define collapse_spaces(a, b, c, d) str(a ## - ## b ## - ## c ## d)</div><div>                                               ^</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c:42:1: error: pasting formed 'b2-', an invalid preprocessing token</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c:41:53: note: expanded from macro 'collapse_spaces'</div><div>#define collapse_spaces(a, b, c, d) str(a ## - ## b ## - ## c ## d)</div><div>                                                    ^</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c:42:1: error: pasting formed '-3c', an invalid preprocessing token</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c:41:58: note: expanded from macro 'collapse_spaces'</div><div>#define collapse_spaces(a, b, c, d) str(a ## - ## b ## - ## c ## d)</div><div>                                                         ^</div><div>5 errors generated.</div><div>/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/clang/test/Preprocessor/macro_paste_msextensions.c:44:11: error: expected string not found in input</div><div>// CHECK: "1a-b2-3cd4"</div><div>          ^</div><div><stdin>:34:1: note: scanning from here</div><div>"1a-b2- 3cd4"</div><div>^</div></div><div><br></div></div><div class="m_-7390434941615284702m_7017854967874196236HOEnZb"><div class="m_-7390434941615284702m_7017854967874196236h5"><br><div class="gmail_quote"><div dir="ltr">On Mon, May 15, 2017 at 10:28 AM Jordan Rose via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" class="m_-7390434941615284702cremed" target="_blank">cfe-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">Hi, Richard. Swift was using this information in order to put imported macros in a particular context. It wouldn't surprise me to hear that we were doing it wrong, and that there's a better way to go from a macro back to a module, but is there a recommended replacement?<br>
<br>
Thanks,<br>
Jordan<br>
<br>
<br>
> On May 12, 2017, at 16:40, Richard Smith via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" class="m_-7390434941615284702cremed" target="_blank">cfe-commits@lists.llvm.org</a>> wrote:<br>
><br>
> Author: rsmith<br>
> Date: Fri May 12 18:40:52 2017<br>
> New Revision: 302966<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=302966&view=rev" rel="noreferrer" class="m_-7390434941615284702cremed" target="_blank">http://llvm.org/viewvc/llvm-project?rev=302966&view=rev</a><br>
> Log:<br>
> Remove unused tracking of owning module for MacroInfo objects.<br>
><br>
> Modified:<br>
>    cfe/trunk/include/clang/Lex/MacroInfo.h<br>
>    cfe/trunk/include/clang/Lex/Preprocessor.h<br>
>    cfe/trunk/lib/Lex/MacroInfo.cpp<br>
>    cfe/trunk/lib/Lex/PPDirectives.cpp<br>
>    cfe/trunk/lib/Lex/Preprocessor.cpp<br>
>    cfe/trunk/lib/Serialization/ASTReader.cpp<br>
>    cfe/trunk/lib/Serialization/ASTWriter.cpp<br>
><br>
> Modified: cfe/trunk/include/clang/Lex/MacroInfo.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/MacroInfo.h?rev=302966&r1=302965&r2=302966&view=diff" rel="noreferrer" class="m_-7390434941615284702cremed" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/MacroInfo.h?rev=302966&r1=302965&r2=302966&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/include/clang/Lex/MacroInfo.h (original)<br>
> +++ cfe/trunk/include/clang/Lex/MacroInfo.h Fri May 12 18:40:52 2017<br>
> @@ -105,9 +105,6 @@ class MacroInfo {<br>
>   /// \brief Must warn if the macro is unused at the end of translation unit.<br>
>   bool IsWarnIfUnused : 1;<br>
><br>
> -  /// \brief Whether this macro info was loaded from an AST file.<br>
> -  bool FromASTFile : 1;<br>
> -<br>
>   /// \brief Whether this macro was used as header guard.<br>
>   bool UsedForHeaderGuard : 1;<br>
><br>
> @@ -264,34 +261,16 @@ public:<br>
>     IsDisabled = true;<br>
>   }<br>
><br>
> -  /// \brief Determine whether this macro info came from an AST file (such as<br>
> -  /// a precompiled header or module) rather than having been parsed.<br>
> -  bool isFromASTFile() const { return FromASTFile; }<br>
> -<br>
>   /// \brief Determine whether this macro was used for a header guard.<br>
>   bool isUsedForHeaderGuard() const { return UsedForHeaderGuard; }<br>
><br>
>   void setUsedForHeaderGuard(bool Val) { UsedForHeaderGuard = Val; }<br>
><br>
> -  /// \brief Retrieve the global ID of the module that owns this particular<br>
> -  /// macro info.<br>
> -  unsigned getOwningModuleID() const {<br>
> -    if (isFromASTFile())<br>
> -      return *(const unsigned *)(this + 1);<br>
> -<br>
> -    return 0;<br>
> -  }<br>
> -<br>
>   void dump() const;<br>
><br>
> private:<br>
>   unsigned getDefinitionLengthSlow(const SourceManager &SM) const;<br>
><br>
> -  void setOwningModuleID(unsigned ID) {<br>
> -    assert(isFromASTFile());<br>
> -    *(unsigned *)(this + 1) = ID;<br>
> -  }<br>
> -<br>
>   friend class Preprocessor;<br>
> };<br>
><br>
><br>
> Modified: cfe/trunk/include/clang/Lex/Preprocessor.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/Preprocessor.h?rev=302966&r1=302965&r2=302966&view=diff" rel="noreferrer" class="m_-7390434941615284702cremed" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/Preprocessor.h?rev=302966&r1=302965&r2=302966&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/include/clang/Lex/Preprocessor.h (original)<br>
> +++ cfe/trunk/include/clang/Lex/Preprocessor.h Fri May 12 18:40:52 2017<br>
> @@ -644,14 +644,6 @@ class Preprocessor {<br>
>   /// of that list.<br>
>   MacroInfoChain *MIChainHead;<br>
><br>
> -  struct DeserializedMacroInfoChain {<br>
> -    MacroInfo MI;<br>
> -    unsigned OwningModuleID; // MUST be immediately after the MacroInfo object<br>
> -                     // so it can be accessed by MacroInfo::getOwningModuleID().<br>
> -    DeserializedMacroInfoChain *Next;<br>
> -  };<br>
> -  DeserializedMacroInfoChain *DeserialMIChainHead;<br>
> -<br>
>   void updateOutOfDateIdentifier(IdentifierInfo &II) const;<br>
><br>
> public:<br>
> @@ -1669,10 +1661,6 @@ public:<br>
>   /// \brief Allocate a new MacroInfo object with the provided SourceLocation.<br>
>   MacroInfo *AllocateMacroInfo(SourceLocation L);<br>
><br>
> -  /// \brief Allocate a new MacroInfo object loaded from an AST file.<br>
> -  MacroInfo *AllocateDeserializedMacroInfo(SourceLocation L,<br>
> -                                           unsigned SubModuleID);<br>
> -<br>
>   /// \brief Turn the specified lexer token into a fully checked and spelled<br>
>   /// filename, e.g. as an operand of \#include.<br>
>   ///<br>
> @@ -1764,9 +1752,6 @@ private:<br>
>   /// macro name.<br>
>   void updateModuleMacroInfo(const IdentifierInfo *II, ModuleMacroInfo &Info);<br>
><br>
> -  /// \brief Allocate a new MacroInfo object.<br>
> -  MacroInfo *AllocateMacroInfo();<br>
> -<br>
>   DefMacroDirective *AllocateDefMacroDirective(MacroInfo *MI,<br>
>                                                SourceLocation Loc);<br>
>   UndefMacroDirective *AllocateUndefMacroDirective(SourceLocation UndefLoc);<br>
><br>
> Modified: cfe/trunk/lib/Lex/MacroInfo.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/MacroInfo.cpp?rev=302966&r1=302965&r2=302966&view=diff" rel="noreferrer" class="m_-7390434941615284702cremed" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/MacroInfo.cpp?rev=302966&r1=302965&r2=302966&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/lib/Lex/MacroInfo.cpp (original)<br>
> +++ cfe/trunk/lib/Lex/MacroInfo.cpp Fri May 12 18:40:52 2017<br>
> @@ -29,7 +29,6 @@ MacroInfo::MacroInfo(SourceLocation DefL<br>
>     IsUsed(false),<br>
>     IsAllowRedefinitionsWithoutWarning(false),<br>
>     IsWarnIfUnused(false),<br>
> -    FromASTFile(false),<br>
>     UsedForHeaderGuard(false) {<br>
> }<br>
><br>
> @@ -137,7 +136,6 @@ LLVM_DUMP_METHOD void MacroInfo::dump()<br>
>   if (IsAllowRedefinitionsWithoutWarning)<br>
>     Out << " allow_redefinitions_without_warning";<br>
>   if (IsWarnIfUnused) Out << " warn_if_unused";<br>
> -  if (FromASTFile) Out << " imported";<br>
>   if (UsedForHeaderGuard) Out << " header_guard";<br>
><br>
>   Out << "\n    #define <macro>";<br>
><br>
> Modified: cfe/trunk/lib/Lex/PPDirectives.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPDirectives.cpp?rev=302966&r1=302965&r2=302966&view=diff" rel="noreferrer" class="m_-7390434941615284702cremed" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/PPDirectives.cpp?rev=302966&r1=302965&r2=302966&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/lib/Lex/PPDirectives.cpp (original)<br>
> +++ cfe/trunk/lib/Lex/PPDirectives.cpp Fri May 12 18:40:52 2017<br>
> @@ -54,35 +54,12 @@ using namespace clang;<br>
> // Utility Methods for Preprocessor Directive Handling.<br>
> //===----------------------------------------------------------------------===//<br>
><br>
> -MacroInfo *Preprocessor::AllocateMacroInfo() {<br>
> -  MacroInfoChain *MIChain = BP.Allocate<MacroInfoChain>();<br>
> -  MIChain->Next = MIChainHead;<br>
> +MacroInfo *Preprocessor::AllocateMacroInfo(SourceLocation L) {<br>
> +  auto *MIChain = new (BP) MacroInfoChain{L, MIChainHead};<br>
>   MIChainHead = MIChain;<br>
>   return &MIChain->MI;<br>
> }<br>
><br>
> -MacroInfo *Preprocessor::AllocateMacroInfo(SourceLocation L) {<br>
> -  MacroInfo *MI = AllocateMacroInfo();<br>
> -  new (MI) MacroInfo(L);<br>
> -  return MI;<br>
> -}<br>
> -<br>
> -MacroInfo *Preprocessor::AllocateDeserializedMacroInfo(SourceLocation L,<br>
> -                                                       unsigned SubModuleID) {<br>
> -  static_assert(alignof(MacroInfo) >= sizeof(SubModuleID),<br>
> -                "alignment for MacroInfo is less than the ID");<br>
> -  DeserializedMacroInfoChain *MIChain =<br>
> -      BP.Allocate<DeserializedMacroInfoChain>();<br>
> -  MIChain->Next = DeserialMIChainHead;<br>
> -  DeserialMIChainHead = MIChain;<br>
> -<br>
> -  MacroInfo *MI = &MIChain->MI;<br>
> -  new (MI) MacroInfo(L);<br>
> -  MI->FromASTFile = true;<br>
> -  MI->setOwningModuleID(SubModuleID);<br>
> -  return MI;<br>
> -}<br>
> -<br>
> DefMacroDirective *Preprocessor::AllocateDefMacroDirective(MacroInfo *MI,<br>
>                                                            SourceLocation Loc) {<br>
>   return new (BP) DefMacroDirective(MI, Loc);<br>
><br>
> Modified: cfe/trunk/lib/Lex/Preprocessor.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Preprocessor.cpp?rev=302966&r1=302965&r2=302966&view=diff" rel="noreferrer" class="m_-7390434941615284702cremed" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Preprocessor.cpp?rev=302966&r1=302965&r2=302966&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/lib/Lex/Preprocessor.cpp (original)<br>
> +++ cfe/trunk/lib/Lex/Preprocessor.cpp Fri May 12 18:40:52 2017<br>
> @@ -88,7 +88,7 @@ Preprocessor::Preprocessor(std::shared_p<br>
>       CurDirLookup(nullptr), CurLexerKind(CLK_Lexer),<br>
>       CurLexerSubmodule(nullptr), Callbacks(nullptr),<br>
>       CurSubmoduleState(&NullSubmoduleState), MacroArgCache(nullptr),<br>
> -      Record(nullptr), MIChainHead(nullptr), DeserialMIChainHead(nullptr) {<br>
> +      Record(nullptr), MIChainHead(nullptr) {<br>
>   OwnsHeaderSearch = OwnsHeaders;<br>
><br>
>   CounterValue = 0; // __COUNTER__ starts at 0.<br>
> @@ -169,11 +169,6 @@ Preprocessor::~Preprocessor() {<br>
>   std::fill(TokenLexerCache, TokenLexerCache + NumCachedTokenLexers, nullptr);<br>
>   CurTokenLexer.reset();<br>
><br>
> -  while (DeserializedMacroInfoChain *I = DeserialMIChainHead) {<br>
> -    DeserialMIChainHead = I->Next;<br>
> -    I->~DeserializedMacroInfoChain();<br>
> -  }<br>
> -<br>
>   // Free any cached MacroArgs.<br>
>   for (MacroArgs *ArgList = MacroArgCache; ArgList;)<br>
>     ArgList = ArgList->deallocate();<br>
><br>
> Modified: cfe/trunk/lib/Serialization/ASTReader.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=302966&r1=302965&r2=302966&view=diff" rel="noreferrer" class="m_-7390434941615284702cremed" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTReader.cpp?rev=302966&r1=302965&r2=302966&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/lib/Serialization/ASTReader.cpp (original)<br>
> +++ cfe/trunk/lib/Serialization/ASTReader.cpp Fri May 12 18:40:52 2017<br>
> @@ -1534,9 +1534,8 @@ MacroInfo *ASTReader::ReadMacroRecord(Mo<br>
>         return Macro;<br>
><br>
>       unsigned NextIndex = 1; // Skip identifier ID.<br>
> -      SubmoduleID SubModID = getGlobalSubmoduleID(F, Record[NextIndex++]);<br>
>       SourceLocation Loc = ReadSourceLocation(F, Record, NextIndex);<br>
> -      MacroInfo *MI = PP.AllocateDeserializedMacroInfo(Loc, SubModID);<br>
> +      MacroInfo *MI = PP.AllocateMacroInfo(Loc);<br>
>       MI->setDefinitionEndLoc(ReadSourceLocation(F, Record, NextIndex));<br>
>       MI->setIsUsed(Record[NextIndex++]);<br>
>       MI->setUsedForHeaderGuard(Record[NextIndex++]);<br>
><br>
> Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=302966&r1=302965&r2=302966&view=diff" rel="noreferrer" class="m_-7390434941615284702cremed" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Serialization/ASTWriter.cpp?rev=302966&r1=302965&r2=302966&view=diff</a><br>
> ==============================================================================<br>
> --- cfe/trunk/lib/Serialization/ASTWriter.cpp (original)<br>
> +++ cfe/trunk/lib/Serialization/ASTWriter.cpp Fri May 12 18:40:52 2017<br>
> @@ -2413,7 +2413,6 @@ void ASTWriter::WritePreprocessor(const<br>
>     }<br>
><br>
>     AddIdentifierRef(Name, Record);<br>
> -    Record.push_back(inferSubmoduleIDFromLocation(MI->getDefinitionLoc()));<br>
>     AddSourceLocation(MI->getDefinitionLoc(), Record);<br>
>     AddSourceLocation(MI->getDefinitionEndLoc(), Record);<br>
>     Record.push_back(MI->isUsed());<br>
><br>
><br>
> _______________________________________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@lists.llvm.org" class="m_-7390434941615284702cremed" target="_blank">cfe-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" class="m_-7390434941615284702cremed" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org" class="m_-7390434941615284702cremed" target="_blank">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" class="m_-7390434941615284702cremed" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
</blockquote></div>
</div></div></blockquote></div></div></div></blockquote></div></div></blockquote></div>