The patch breaks this test http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/1349/steps/check-clang%20msan/logs/stdio
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