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