Author: Sam McCall Date: 2022-03-16T00:14:11+01:00 New Revision: b97856c4cfe7efb13887d5691002a7aa38440924
URL: https://github.com/llvm/llvm-project/commit/b97856c4cfe7efb13887d5691002a7aa38440924 DIFF: https://github.com/llvm/llvm-project/commit/b97856c4cfe7efb13887d5691002a7aa38440924.diff LOG: [pseudo] Move pseudoparser from clang to clang-tools-extra This should make clearer that: - it's not part of clang proper - there's no expectation to update it along with clang (beyond green tests) - clang should not depend on it This is intended to be expose a library, so unlike other tools has a split between include/ and lib/. The main renames are: clang/lib/Tooling/Syntax/Pseudo/* => clang-tools-extra/pseudo/lib/* clang/include/clang/Tooling/Syntax/Pseudo/* => clang-tools-extra/pseudo/include/clang-pseudo/* clang/tools/clang/pseudo/* => clang-tools-extra/pseudo/tool/* clang/test/Syntax/* => clang-tools-extra/pseudo/test/* clang/unittests/Tooling/Syntax/Pseudo/* => clang-tools-extra/pseudo/unittests/* #include "clang/Tooling/Syntax/Pseudo/*" => #include "clang-pseudo/*" namespace clang::syntax::pseudo => namespace clang::pseudo check-clang => check-clang-pseudo clangToolingSyntaxPseudo => clangPseudo The clang-pseudo and ClangPseudoTests binaries are not renamed. See discussion around: https://discourse.llvm.org/t/rfc-a-c-pseudo-parser-for-tooling/59217/50 Differential Revision: https://reviews.llvm.org/D121233 Added: clang-tools-extra/pseudo/CMakeLists.txt clang-tools-extra/pseudo/README.md clang-tools-extra/pseudo/include/clang-pseudo/DirectiveMap.h clang-tools-extra/pseudo/include/clang-pseudo/Grammar.h clang-tools-extra/pseudo/include/clang-pseudo/LRGraph.h clang-tools-extra/pseudo/include/clang-pseudo/LRTable.h clang-tools-extra/pseudo/include/clang-pseudo/Token.h clang-tools-extra/pseudo/lib/CMakeLists.txt clang-tools-extra/pseudo/lib/DirectiveMap.cpp clang-tools-extra/pseudo/lib/Grammar.cpp clang-tools-extra/pseudo/lib/GrammarBNF.cpp clang-tools-extra/pseudo/lib/LRGraph.cpp clang-tools-extra/pseudo/lib/LRTable.cpp clang-tools-extra/pseudo/lib/LRTableBuild.cpp clang-tools-extra/pseudo/lib/Lex.cpp clang-tools-extra/pseudo/lib/Token.cpp clang-tools-extra/pseudo/lib/cxx.bnf clang-tools-extra/pseudo/test/CMakeLists.txt clang-tools-extra/pseudo/test/Unit/lit.cfg.py clang-tools-extra/pseudo/test/Unit/lit.site.cfg.py.in clang-tools-extra/pseudo/test/check-cxx-bnf.test clang-tools-extra/pseudo/test/lex.c clang-tools-extra/pseudo/test/lit.cfg.py clang-tools-extra/pseudo/test/lit.local.cfg clang-tools-extra/pseudo/test/lit.site.cfg.py.in clang-tools-extra/pseudo/test/lr-build-basic.test clang-tools-extra/pseudo/test/lr-build-conflicts.test clang-tools-extra/pseudo/tool/CMakeLists.txt clang-tools-extra/pseudo/tool/ClangPseudo.cpp clang-tools-extra/pseudo/unittests/CMakeLists.txt clang-tools-extra/pseudo/unittests/DirectiveMapTest.cpp clang-tools-extra/pseudo/unittests/GrammarTest.cpp clang-tools-extra/pseudo/unittests/LRTableTest.cpp clang-tools-extra/pseudo/unittests/TokenTest.cpp Modified: clang-tools-extra/CMakeLists.txt clang/lib/Tooling/Syntax/CMakeLists.txt clang/tools/CMakeLists.txt clang/unittests/Tooling/Syntax/CMakeLists.txt Removed: clang/include/clang/Tooling/Syntax/Pseudo/DirectiveMap.h clang/include/clang/Tooling/Syntax/Pseudo/Grammar.h clang/include/clang/Tooling/Syntax/Pseudo/LRGraph.h clang/include/clang/Tooling/Syntax/Pseudo/LRTable.h clang/include/clang/Tooling/Syntax/Pseudo/Token.h clang/lib/Tooling/Syntax/Pseudo/CMakeLists.txt clang/lib/Tooling/Syntax/Pseudo/DirectiveMap.cpp clang/lib/Tooling/Syntax/Pseudo/Grammar.cpp clang/lib/Tooling/Syntax/Pseudo/GrammarBNF.cpp clang/lib/Tooling/Syntax/Pseudo/LRGraph.cpp clang/lib/Tooling/Syntax/Pseudo/LRTable.cpp clang/lib/Tooling/Syntax/Pseudo/LRTableBuild.cpp clang/lib/Tooling/Syntax/Pseudo/Lex.cpp clang/lib/Tooling/Syntax/Pseudo/README.md clang/lib/Tooling/Syntax/Pseudo/Token.cpp clang/lib/Tooling/Syntax/Pseudo/cxx.bnf clang/test/Syntax/check-cxx-bnf.test clang/test/Syntax/lex.c clang/test/Syntax/lit.local.cfg clang/test/Syntax/lr-build-basic.test clang/test/Syntax/lr-build-conflicts.test clang/tools/clang-pseudo/CMakeLists.txt clang/tools/clang-pseudo/ClangPseudo.cpp clang/unittests/Tooling/Syntax/Pseudo/CMakeLists.txt clang/unittests/Tooling/Syntax/Pseudo/DirectiveMapTest.cpp clang/unittests/Tooling/Syntax/Pseudo/GrammarTest.cpp clang/unittests/Tooling/Syntax/Pseudo/LRTableTest.cpp clang/unittests/Tooling/Syntax/Pseudo/TokenTest.cpp ################################################################################ diff --git a/clang-tools-extra/CMakeLists.txt b/clang-tools-extra/CMakeLists.txt index 7b8274a97336b..285e5529e6fc6 100644 --- a/clang-tools-extra/CMakeLists.txt +++ b/clang-tools-extra/CMakeLists.txt @@ -15,6 +15,7 @@ add_subdirectory(clang-include-fixer) add_subdirectory(clang-move) add_subdirectory(clang-query) add_subdirectory(pp-trace) +add_subdirectory(pseudo) add_subdirectory(tool-template) # Add the common testsuite after all the tools. diff --git a/clang-tools-extra/pseudo/CMakeLists.txt b/clang-tools-extra/pseudo/CMakeLists.txt new file mode 100644 index 0000000000000..a10884ad406b9 --- /dev/null +++ b/clang-tools-extra/pseudo/CMakeLists.txt @@ -0,0 +1,6 @@ +include_directories(include) +include_directories(${CMAKE_CURRENT_BINARY_DIR}/include) +add_subdirectory(lib) +add_subdirectory(tool) +add_subdirectory(unittests) +add_subdirectory(test) diff --git a/clang/lib/Tooling/Syntax/Pseudo/README.md b/clang-tools-extra/pseudo/README.md similarity index 100% rename from clang/lib/Tooling/Syntax/Pseudo/README.md rename to clang-tools-extra/pseudo/README.md diff --git a/clang/include/clang/Tooling/Syntax/Pseudo/DirectiveMap.h b/clang-tools-extra/pseudo/include/clang-pseudo/DirectiveMap.h similarity index 96% rename from clang/include/clang/Tooling/Syntax/Pseudo/DirectiveMap.h rename to clang-tools-extra/pseudo/include/clang-pseudo/DirectiveMap.h index 177302d9bae7a..e95f5fbfb720c 100644 --- a/clang/include/clang/Tooling/Syntax/Pseudo/DirectiveMap.h +++ b/clang-tools-extra/pseudo/include/clang-pseudo/DirectiveMap.h @@ -25,16 +25,15 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLING_SYNTAX_PREPROCESS_H -#define LLVM_CLANG_TOOLING_SYNTAX_PREPROCESS_H +#ifndef CLANG_PSEUDO_DIRECTIVEMAP_H +#define CLANG_PSEUDO_DIRECTIVEMAP_H +#include "clang-pseudo/Token.h" #include "clang/Basic/TokenKinds.h" -#include "clang/Tooling/Syntax/Pseudo/Token.h" #include <vector> namespace clang { class LangOptions; -namespace syntax { namespace pseudo { /// Describes the structure of a source file, as seen by the preprocessor. @@ -142,7 +141,6 @@ class DirectiveMap::Chunk { }; } // namespace pseudo -} // namespace syntax } // namespace clang #endif diff --git a/clang/include/clang/Tooling/Syntax/Pseudo/Grammar.h b/clang-tools-extra/pseudo/include/clang-pseudo/Grammar.h similarity index 98% rename from clang/include/clang/Tooling/Syntax/Pseudo/Grammar.h rename to clang-tools-extra/pseudo/include/clang-pseudo/Grammar.h index 086809ef41423..d7bbee35ce0b9 100644 --- a/clang/include/clang/Tooling/Syntax/Pseudo/Grammar.h +++ b/clang-tools-extra/pseudo/include/clang-pseudo/Grammar.h @@ -33,8 +33,8 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLING_SYNTAX_GRAMMAR_H -#define LLVM_CLANG_TOOLING_SYNTAX_GRAMMAR_H +#ifndef CLANG_PSEUDO_GRAMMAR_H +#define CLANG_PSEUDO_GRAMMAR_H #include "clang/Basic/TokenKinds.h" #include "llvm/ADT/ArrayRef.h" @@ -44,7 +44,6 @@ #include <vector> namespace clang { -namespace syntax { namespace pseudo { // A SymbolID uniquely identifies a terminal/non-terminal symbol in a grammar. // Non-terminal IDs are indexes into a table of non-terminal symbols. @@ -178,7 +177,6 @@ struct GrammarTable { }; } // namespace pseudo -} // namespace syntax } // namespace clang #endif // LLVM_CLANG_TOOLING_SYNTAX_GRAMMAR_H diff --git a/clang/include/clang/Tooling/Syntax/Pseudo/LRGraph.h b/clang-tools-extra/pseudo/include/clang-pseudo/LRGraph.h similarity index 88% rename from clang/include/clang/Tooling/Syntax/Pseudo/LRGraph.h rename to clang-tools-extra/pseudo/include/clang-pseudo/LRGraph.h index 1de15b79ee40f..ba244d83a4293 100644 --- a/clang/include/clang/Tooling/Syntax/Pseudo/LRGraph.h +++ b/clang-tools-extra/pseudo/include/clang-pseudo/LRGraph.h @@ -28,15 +28,14 @@ // in making decisions. //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLING_SYNTAX_PSEUDO_LRGRAPH_H -#define LLVM_CLANG_TOOLING_SYNTAX_PSEUDO_LRGRAPH_H +#ifndef CLANG_PSEUDO_LRGRAPH_H +#define CLANG_PSEUDO_LRGRAPH_H -#include "clang/Tooling/Syntax/Pseudo/Grammar.h" +#include "clang-pseudo/Grammar.h" #include "llvm/ADT/Hashing.h" #include <vector> namespace clang { -namespace syntax { namespace pseudo { // An LR item -- a grammar rule with a dot at some position of the body. @@ -152,23 +151,22 @@ class LRGraph { }; } // namespace pseudo -} // namespace syntax } // namespace clang namespace llvm { -// Support clang::syntax::pseudo::Item as DenseMap keys. -template <> struct DenseMapInfo<clang::syntax::pseudo::Item> { - static inline clang::syntax::pseudo::Item getEmptyKey() { - return clang::syntax::pseudo::Item::sentinel(-1); +// Support clang::pseudo::Item as DenseMap keys. +template <> struct DenseMapInfo<clang::pseudo::Item> { + static inline clang::pseudo::Item getEmptyKey() { + return clang::pseudo::Item::sentinel(-1); } - static inline clang::syntax::pseudo::Item getTombstoneKey() { - return clang::syntax::pseudo::Item::sentinel(-2); + static inline clang::pseudo::Item getTombstoneKey() { + return clang::pseudo::Item::sentinel(-2); } - static unsigned getHashValue(const clang::syntax::pseudo::Item &I) { + static unsigned getHashValue(const clang::pseudo::Item &I) { return hash_value(I); } - static bool isEqual(const clang::syntax::pseudo::Item &LHS, - const clang::syntax::pseudo::Item &RHS) { + static bool isEqual(const clang::pseudo::Item &LHS, + const clang::pseudo::Item &RHS) { return LHS == RHS; } }; diff --git a/clang/include/clang/Tooling/Syntax/Pseudo/LRTable.h b/clang-tools-extra/pseudo/include/clang-pseudo/LRTable.h similarity index 97% rename from clang/include/clang/Tooling/Syntax/Pseudo/LRTable.h rename to clang-tools-extra/pseudo/include/clang-pseudo/LRTable.h index 025f7f141633a..b7e166ae30d5e 100644 --- a/clang/include/clang/Tooling/Syntax/Pseudo/LRTable.h +++ b/clang-tools-extra/pseudo/include/clang-pseudo/LRTable.h @@ -34,16 +34,15 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLING_SYNTAX_PSEUDO_LRTABLE_H -#define LLVM_CLANG_TOOLING_SYNTAX_PSEUDO_LRTABLE_H +#ifndef CLANG_PSEUDO_LRTABLE_H +#define CLANG_PSEUDO_LRTABLE_H -#include "clang/Tooling/Syntax/Pseudo/Grammar.h" +#include "clang-pseudo/Grammar.h" #include "llvm/ADT/ArrayRef.h" #include <cstdint> #include <vector> namespace clang { -namespace syntax { namespace pseudo { // Represents the LR parsing table, which can efficiently the question "what is @@ -176,7 +175,6 @@ class LRTable { llvm::raw_ostream &operator<<(llvm::raw_ostream &, const LRTable::Action &); } // namespace pseudo -} // namespace syntax } // namespace clang #endif // LLVM_CLANG_TOOLING_SYNTAX_PSEUDO_LRTABLE_H diff --git a/clang/include/clang/Tooling/Syntax/Pseudo/Token.h b/clang-tools-extra/pseudo/include/clang-pseudo/Token.h similarity index 98% rename from clang/include/clang/Tooling/Syntax/Pseudo/Token.h rename to clang-tools-extra/pseudo/include/clang-pseudo/Token.h index a54146c2f6f32..69c75329c91e4 100644 --- a/clang/include/clang/Tooling/Syntax/Pseudo/Token.h +++ b/clang-tools-extra/pseudo/include/clang-pseudo/Token.h @@ -25,8 +25,8 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CLANG_TOOLING_SYNTAX_TOKEN_H -#define LLVM_CLANG_TOOLING_SYNTAX_TOKEN_H +#ifndef CLANG_PSEUDO_TOKEN_H +#define CLANG_PSEUDO_TOKEN_H #include "clang/Basic/LLVM.h" #include "clang/Basic/TokenKinds.h" @@ -39,7 +39,6 @@ namespace clang { class LangOptions; -namespace syntax { namespace pseudo { /// A single C++ or preprocessor token. @@ -199,7 +198,6 @@ TokenStream cook(const TokenStream &, const clang::LangOptions &); TokenStream stripComments(const TokenStream &); } // namespace pseudo -} // namespace syntax } // namespace clang #endif diff --git a/clang/lib/Tooling/Syntax/Pseudo/CMakeLists.txt b/clang-tools-extra/pseudo/lib/CMakeLists.txt similarity index 81% rename from clang/lib/Tooling/Syntax/Pseudo/CMakeLists.txt rename to clang-tools-extra/pseudo/lib/CMakeLists.txt index 1e00905731c83..7239a58bc85f2 100644 --- a/clang/lib/Tooling/Syntax/Pseudo/CMakeLists.txt +++ b/clang-tools-extra/pseudo/lib/CMakeLists.txt @@ -1,6 +1,6 @@ set(LLVM_LINK_COMPONENTS Support) -add_clang_library(clangToolingSyntaxPseudo +add_clang_library(clangPseudo DirectiveMap.cpp Grammar.cpp GrammarBNF.cpp diff --git a/clang/lib/Tooling/Syntax/Pseudo/DirectiveMap.cpp b/clang-tools-extra/pseudo/lib/DirectiveMap.cpp similarity index 97% rename from clang/lib/Tooling/Syntax/Pseudo/DirectiveMap.cpp rename to clang-tools-extra/pseudo/lib/DirectiveMap.cpp index 06a3b4400cf39..6e66708818954 100644 --- a/clang/lib/Tooling/Syntax/Pseudo/DirectiveMap.cpp +++ b/clang-tools-extra/pseudo/lib/DirectiveMap.cpp @@ -6,13 +6,12 @@ // //===----------------------------------------------------------------------===// -#include "clang/Tooling/Syntax/Pseudo/DirectiveMap.h" +#include "clang-pseudo/DirectiveMap.h" #include "clang/Basic/IdentifierTable.h" #include "clang/Basic/TokenKinds.h" #include "llvm/Support/FormatVariadic.h" namespace clang { -namespace syntax { namespace pseudo { namespace { @@ -151,8 +150,8 @@ DirectiveMap DirectiveMap::parse(const TokenStream &Code) { } static void dump(llvm::raw_ostream &OS, const DirectiveMap &, unsigned Indent); -static void dump(llvm::raw_ostream &OS, const DirectiveMap::Directive &Directive, - unsigned Indent) { +static void dump(llvm::raw_ostream &OS, + const DirectiveMap::Directive &Directive, unsigned Indent) { OS.indent(Indent) << llvm::formatv("#{0} ({1} tokens)\n", tok::getPPKeywordSpelling(Directive.Kind), Directive.Tokens.size()); @@ -205,5 +204,4 @@ OSTREAM_DUMP(DirectiveMap::Code) #undef OSTREAM_DUMP } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/lib/Tooling/Syntax/Pseudo/Grammar.cpp b/clang-tools-extra/pseudo/lib/Grammar.cpp similarity index 98% rename from clang/lib/Tooling/Syntax/Pseudo/Grammar.cpp rename to clang-tools-extra/pseudo/lib/Grammar.cpp index 4f1a5111ea73c..542d30c7c5051 100644 --- a/clang/lib/Tooling/Syntax/Pseudo/Grammar.cpp +++ b/clang-tools-extra/pseudo/lib/Grammar.cpp @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "clang/Tooling/Syntax/Pseudo/Grammar.h" +#include "clang-pseudo/Grammar.h" #include "clang/Basic/TokenKinds.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/STLExtras.h" @@ -15,7 +15,6 @@ #include "llvm/Support/raw_ostream.h" namespace clang { -namespace syntax { namespace pseudo { Rule::Rule(SymbolID Target, llvm::ArrayRef<SymbolID> Sequence) @@ -181,5 +180,4 @@ static llvm::ArrayRef<std::string> getTerminalNames() { GrammarTable::GrammarTable() : Terminals(getTerminalNames()) {} } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/lib/Tooling/Syntax/Pseudo/GrammarBNF.cpp b/clang-tools-extra/pseudo/lib/GrammarBNF.cpp similarity index 98% rename from clang/lib/Tooling/Syntax/Pseudo/GrammarBNF.cpp rename to clang-tools-extra/pseudo/lib/GrammarBNF.cpp index bc90a9674d9ef..5e4739719eacd 100644 --- a/clang/lib/Tooling/Syntax/Pseudo/GrammarBNF.cpp +++ b/clang-tools-extra/pseudo/lib/GrammarBNF.cpp @@ -6,15 +6,14 @@ // //===----------------------------------------------------------------------===// +#include "clang-pseudo/Grammar.h" #include "clang/Basic/TokenKinds.h" -#include "clang/Tooling/Syntax/Pseudo/Grammar.h" #include "llvm/ADT/DenseSet.h" #include "llvm/ADT/StringExtras.h" #include "llvm/Support/FormatVariadic.h" #include <memory> namespace clang { -namespace syntax { namespace pseudo { namespace { @@ -244,5 +243,4 @@ Grammar::parseBNF(llvm::StringRef BNF, std::vector<std::string> &Diagnostics) { } } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/lib/Tooling/Syntax/Pseudo/LRGraph.cpp b/clang-tools-extra/pseudo/lib/LRGraph.cpp similarity index 94% rename from clang/lib/Tooling/Syntax/Pseudo/LRGraph.cpp rename to clang-tools-extra/pseudo/lib/LRGraph.cpp index 17e47718812ad..edb544fef4940 100644 --- a/clang/lib/Tooling/Syntax/Pseudo/LRGraph.cpp +++ b/clang-tools-extra/pseudo/lib/LRGraph.cpp @@ -6,8 +6,8 @@ // //===----------------------------------------------------------------------===// -#include "clang/Tooling/Syntax/Pseudo/LRGraph.h" -#include "clang/Tooling/Syntax/Pseudo/Grammar.h" +#include "clang-pseudo/LRGraph.h" +#include "clang-pseudo/Grammar.h" #include "llvm/ADT/DenseSet.h" #include "llvm/ADT/Hashing.h" #include "llvm/ADT/STLExtras.h" @@ -15,16 +15,16 @@ #include "llvm/Support/FormatVariadic.h" #include "llvm/Support/raw_ostream.h" -using ItemSet = std::vector<clang::syntax::pseudo::Item>; +using ItemSet = std::vector<clang::pseudo::Item>; namespace llvm { -// Support clang::syntax::pseudo::Item as DenseMap keys. +// Support clang::pseudo::Item as DenseMap keys. template <> struct DenseMapInfo<ItemSet> { static inline ItemSet getEmptyKey() { - return {DenseMapInfo<clang::syntax::pseudo::Item>::getEmptyKey()}; + return {DenseMapInfo<clang::pseudo::Item>::getEmptyKey()}; } static inline ItemSet getTombstoneKey() { - return {DenseMapInfo<clang::syntax::pseudo::Item>::getTombstoneKey()}; + return {DenseMapInfo<clang::pseudo::Item>::getTombstoneKey()}; } static unsigned getHashValue(const ItemSet &I) { return llvm::hash_combine_range(I.begin(), I.end()); @@ -36,7 +36,6 @@ template <> struct DenseMapInfo<ItemSet> { } // namespace llvm namespace clang { -namespace syntax { namespace pseudo { namespace { @@ -227,5 +226,4 @@ LRGraph LRGraph::buildLR0(const Grammar &G) { } } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/lib/Tooling/Syntax/Pseudo/LRTable.cpp b/clang-tools-extra/pseudo/lib/LRTable.cpp similarity index 97% rename from clang/lib/Tooling/Syntax/Pseudo/LRTable.cpp rename to clang-tools-extra/pseudo/lib/LRTable.cpp index 957d17a503cf0..b9ff7e4aca6a9 100644 --- a/clang/lib/Tooling/Syntax/Pseudo/LRTable.cpp +++ b/clang-tools-extra/pseudo/lib/LRTable.cpp @@ -6,8 +6,8 @@ // //===----------------------------------------------------------------------===// -#include "clang/Tooling/Syntax/Pseudo/LRTable.h" -#include "clang/Tooling/Syntax/Pseudo/Grammar.h" +#include "clang-pseudo/LRTable.h" +#include "clang-pseudo/Grammar.h" #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/STLExtras.h" #include "llvm/Support/ErrorHandling.h" @@ -15,7 +15,6 @@ #include "llvm/Support/raw_ostream.h" namespace clang { -namespace syntax { namespace pseudo { llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const LRTable::Action &A) { @@ -122,5 +121,4 @@ llvm::ArrayRef<LRTable::Action> LRTable::find(StateID Src, SymbolID ID) const { } } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/lib/Tooling/Syntax/Pseudo/LRTableBuild.cpp b/clang-tools-extra/pseudo/lib/LRTableBuild.cpp similarity index 88% rename from clang/lib/Tooling/Syntax/Pseudo/LRTableBuild.cpp rename to clang-tools-extra/pseudo/lib/LRTableBuild.cpp index aaf9cad31961f..cb4ea698c4bb8 100644 --- a/clang/lib/Tooling/Syntax/Pseudo/LRTableBuild.cpp +++ b/clang-tools-extra/pseudo/lib/LRTableBuild.cpp @@ -6,23 +6,23 @@ // //===----------------------------------------------------------------------===// +#include "clang-pseudo/Grammar.h" +#include "clang-pseudo/LRGraph.h" +#include "clang-pseudo/LRTable.h" #include "clang/Basic/TokenKinds.h" -#include "clang/Tooling/Syntax/Pseudo/Grammar.h" -#include "clang/Tooling/Syntax/Pseudo/LRGraph.h" -#include "clang/Tooling/Syntax/Pseudo/LRTable.h" #include <cstdint> namespace llvm { -template <> struct DenseMapInfo<clang::syntax::pseudo::LRTable::Entry> { - using Entry = clang::syntax::pseudo::LRTable::Entry; +template <> struct DenseMapInfo<clang::pseudo::LRTable::Entry> { + using Entry = clang::pseudo::LRTable::Entry; static inline Entry getEmptyKey() { - static Entry E{static_cast<clang::syntax::pseudo::SymbolID>(-1), 0, - clang::syntax::pseudo::LRTable::Action::sentinel()}; + static Entry E{static_cast<clang::pseudo::SymbolID>(-1), 0, + clang::pseudo::LRTable::Action::sentinel()}; return E; } static inline Entry getTombstoneKey() { - static Entry E{static_cast<clang::syntax::pseudo::SymbolID>(-2), 0, - clang::syntax::pseudo::LRTable::Action::sentinel()}; + static Entry E{static_cast<clang::pseudo::SymbolID>(-2), 0, + clang::pseudo::LRTable::Action::sentinel()}; return E; } static unsigned getHashValue(const Entry &I) { @@ -36,7 +36,6 @@ template <> struct DenseMapInfo<clang::syntax::pseudo::LRTable::Entry> { } // namespace llvm namespace clang { -namespace syntax { namespace pseudo { class LRTable::Builder { @@ -139,5 +138,4 @@ LRTable LRTable::buildSLR(const Grammar &G) { } } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/lib/Tooling/Syntax/Pseudo/Lex.cpp b/clang-tools-extra/pseudo/lib/Lex.cpp similarity index 97% rename from clang/lib/Tooling/Syntax/Pseudo/Lex.cpp rename to clang-tools-extra/pseudo/lib/Lex.cpp index ac0120cb9e473..f5a239533c532 100644 --- a/clang/lib/Tooling/Syntax/Pseudo/Lex.cpp +++ b/clang-tools-extra/pseudo/lib/Lex.cpp @@ -6,14 +6,13 @@ // //===----------------------------------------------------------------------===// +#include "clang-pseudo/Token.h" #include "clang/Basic/SourceLocation.h" #include "clang/Basic/TokenKinds.h" #include "clang/Lex/Lexer.h" #include "clang/Lex/LiteralSupport.h" -#include "clang/Tooling/Syntax/Pseudo/Token.h" namespace clang { -namespace syntax { namespace pseudo { TokenStream lex(const std::string &Code, const clang::LangOptions &LangOpts) { @@ -110,5 +109,4 @@ TokenStream cook(const TokenStream &Code, const LangOptions &LangOpts) { } } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/lib/Tooling/Syntax/Pseudo/Token.cpp b/clang-tools-extra/pseudo/lib/Token.cpp similarity index 97% rename from clang/lib/Tooling/Syntax/Pseudo/Token.cpp rename to clang-tools-extra/pseudo/lib/Token.cpp index e7a572a0c5d90..f07c1d1b272df 100644 --- a/clang/lib/Tooling/Syntax/Pseudo/Token.cpp +++ b/clang-tools-extra/pseudo/lib/Token.cpp @@ -6,13 +6,12 @@ // //===----------------------------------------------------------------------===// -#include "clang/Tooling/Syntax/Pseudo/Token.h" +#include "clang-pseudo/Token.h" #include "llvm/ADT/StringExtras.h" #include "llvm/Support/Format.h" #include "llvm/Support/FormatVariadic.h" namespace clang { -namespace syntax { namespace pseudo { llvm::raw_ostream &operator<<(llvm::raw_ostream &OS, const Token &T) { @@ -105,5 +104,4 @@ TokenStream stripComments(const TokenStream &Input) { } } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/lib/Tooling/Syntax/Pseudo/cxx.bnf b/clang-tools-extra/pseudo/lib/cxx.bnf similarity index 100% rename from clang/lib/Tooling/Syntax/Pseudo/cxx.bnf rename to clang-tools-extra/pseudo/lib/cxx.bnf diff --git a/clang-tools-extra/pseudo/test/CMakeLists.txt b/clang-tools-extra/pseudo/test/CMakeLists.txt new file mode 100644 index 0000000000000..334acb58d41c2 --- /dev/null +++ b/clang-tools-extra/pseudo/test/CMakeLists.txt @@ -0,0 +1,38 @@ +# Set CLANG_TOOLS_DIR to buildtree/bin, or buildtree/%(build_mode)s/bin if the +# location is dynamic. The latter must be interpolated by lit configs. +# FIXME: this is duplicated in many places. +if (CMAKE_CFG_INTDIR STREQUAL ".") + set(LLVM_BUILD_MODE ".") +else () + set(LLVM_BUILD_MODE "%(build_mode)s") +endif () +string(REPLACE ${CMAKE_CFG_INTDIR} ${LLVM_BUILD_MODE} CLANG_TOOLS_DIR ${LLVM_RUNTIME_OUTPUT_INTDIR}) + +set(CLANG_PSEUDO_TEST_DEPS + clang-pseudo + ClangPseudoTests + ) + +foreach(dep FileCheck not) + if(TARGET ${dep}) + list(APPEND CLANG_PSEUDO_TEST_DEPS ${dep}) + endif() +endforeach() + +configure_lit_site_cfg( + ${CMAKE_CURRENT_SOURCE_DIR}/lit.site.cfg.py.in + ${CMAKE_CURRENT_BINARY_DIR}/lit.site.cfg.py + MAIN_CONFIG + ${CMAKE_CURRENT_SOURCE_DIR}/lit.cfg.py + ) + +configure_lit_site_cfg( + ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.site.cfg.py.in + ${CMAKE_CURRENT_BINARY_DIR}/Unit/lit.site.cfg.py + MAIN_CONFIG + ${CMAKE_CURRENT_SOURCE_DIR}/Unit/lit.cfg.py + ) + +add_lit_testsuite(check-clang-pseudo "Running the clang-pseudo regression tests" + ${CMAKE_CURRENT_BINARY_DIR} + DEPENDS ${CLANG_PSEUDO_TEST_DEPS}) diff --git a/clang-tools-extra/pseudo/test/Unit/lit.cfg.py b/clang-tools-extra/pseudo/test/Unit/lit.cfg.py new file mode 100644 index 0000000000000..1ba9626e489ad --- /dev/null +++ b/clang-tools-extra/pseudo/test/Unit/lit.cfg.py @@ -0,0 +1,19 @@ +import lit.formats +config.name = "clangPseudo Unit Tests" +config.test_format = lit.formats.GoogleTest('.', 'Tests') +config.test_source_root = config.clang_pseudo_binary_dir + "/unittests" +config.test_exec_root = config.clang_pseudo_binary_dir + "/unittests" + +# Point the dynamic loader at dynamic libraries in 'lib'. +# FIXME: it seems every project has a copy of this logic. Move it somewhere. +import platform +if platform.system() == 'Darwin': + shlibpath_var = 'DYLD_LIBRARY_PATH' +elif platform.system() == 'Windows': + shlibpath_var = 'PATH' +else: + shlibpath_var = 'LD_LIBRARY_PATH' +config.environment[shlibpath_var] = os.path.pathsep.join(( + "@SHLIBDIR@", "@LLVM_LIBS_DIR@", + config.environment.get(shlibpath_var,''))) + diff --git a/clang-tools-extra/pseudo/test/Unit/lit.site.cfg.py.in b/clang-tools-extra/pseudo/test/Unit/lit.site.cfg.py.in new file mode 100644 index 0000000000000..4107b0d2eb83f --- /dev/null +++ b/clang-tools-extra/pseudo/test/Unit/lit.site.cfg.py.in @@ -0,0 +1,11 @@ +@LIT_SITE_CFG_IN_HEADER@ +# This is a shim to run the gtest unittests in ../unittests using lit. + +config.llvm_libs_dir = "@LLVM_LIBS_DIR@" +config.shlibdir = "@SHLIBDIR@" + +config.clang_pseudo_source_dir = "@CMAKE_CURRENT_SOURCE_DIR@/.." +config.clang_pseudo_binary_dir = "@CMAKE_CURRENT_BINARY_DIR@/.." + +# Delegate logic to lit.cfg.py. +lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/Unit/lit.cfg.py") diff --git a/clang/test/Syntax/check-cxx-bnf.test b/clang-tools-extra/pseudo/test/check-cxx-bnf.test similarity index 100% rename from clang/test/Syntax/check-cxx-bnf.test rename to clang-tools-extra/pseudo/test/check-cxx-bnf.test diff --git a/clang/test/Syntax/lex.c b/clang-tools-extra/pseudo/test/lex.c similarity index 100% rename from clang/test/Syntax/lex.c rename to clang-tools-extra/pseudo/test/lex.c diff --git a/clang-tools-extra/pseudo/test/lit.cfg.py b/clang-tools-extra/pseudo/test/lit.cfg.py new file mode 100644 index 0000000000000..d92c95c80b5f1 --- /dev/null +++ b/clang-tools-extra/pseudo/test/lit.cfg.py @@ -0,0 +1,16 @@ +import lit.llvm + +lit.llvm.initialize(lit_config, config) +lit.llvm.llvm_config.use_default_substitutions() + +config.name = 'ClangPseudo' +config.suffixes = ['.test', '.c', '.cpp'] +config.excludes = ['Inputs'] +config.test_format = lit.formats.ShTest(not lit.llvm.llvm_config.use_lit_shell) +config.test_source_root = config.clang_pseudo_source_dir + "/test" +config.test_exec_root = config.clang_pseudo_binary_dir + "/test" + +config.environment['PATH'] = os.path.pathsep.join(( + config.clang_tools_dir, + config.llvm_tools_dir, + config.environment['PATH'])) diff --git a/clang-tools-extra/pseudo/test/lit.local.cfg b/clang-tools-extra/pseudo/test/lit.local.cfg new file mode 100644 index 0000000000000..899b7e159a7f4 --- /dev/null +++ b/clang-tools-extra/pseudo/test/lit.local.cfg @@ -0,0 +1,2 @@ +cxx_bnf_file = os.path.join(config.clang_pseudo_source_dir, 'lib', 'cxx.bnf') +config.substitutions.append(('%cxx-bnf-file', cxx_bnf_file)) diff --git a/clang-tools-extra/pseudo/test/lit.site.cfg.py.in b/clang-tools-extra/pseudo/test/lit.site.cfg.py.in new file mode 100644 index 0000000000000..2f7a095736ecb --- /dev/null +++ b/clang-tools-extra/pseudo/test/lit.site.cfg.py.in @@ -0,0 +1,14 @@ +@LIT_SITE_CFG_IN_HEADER@ + +# Variables needed for common llvm config. +config.clang_tools_dir = "@CLANG_TOOLS_DIR@" +config.lit_tools_dir = "@LLVM_LIT_TOOLS_DIR@" +config.llvm_tools_dir = lit_config.substitute("@LLVM_TOOLS_DIR@") +config.llvm_libs_dir = lit_config.substitute("@LLVM_LIBS_DIR@") +config.target_triple = "@TARGET_TRIPLE@" +config.python_executable = "@Python3_EXECUTABLE@" + +config.clang_pseudo_source_dir = "@CMAKE_CURRENT_SOURCE_DIR@/.." +config.clang_pseudo_binary_dir = "@CMAKE_CURRENT_BINARY_DIR@/.." +# Delegate logic to lit.cfg.py. +lit_config.load_config(config, "@CMAKE_CURRENT_SOURCE_DIR@/lit.cfg.py") diff --git a/clang/test/Syntax/lr-build-basic.test b/clang-tools-extra/pseudo/test/lr-build-basic.test similarity index 100% rename from clang/test/Syntax/lr-build-basic.test rename to clang-tools-extra/pseudo/test/lr-build-basic.test diff --git a/clang/test/Syntax/lr-build-conflicts.test b/clang-tools-extra/pseudo/test/lr-build-conflicts.test similarity index 100% rename from clang/test/Syntax/lr-build-conflicts.test rename to clang-tools-extra/pseudo/test/lr-build-conflicts.test diff --git a/clang/tools/clang-pseudo/CMakeLists.txt b/clang-tools-extra/pseudo/tool/CMakeLists.txt similarity index 66% rename from clang/tools/clang-pseudo/CMakeLists.txt rename to clang-tools-extra/pseudo/tool/CMakeLists.txt index c03c8c62d4cd5..bf73f89d4e1dd 100644 --- a/clang/tools/clang-pseudo/CMakeLists.txt +++ b/clang-tools-extra/pseudo/tool/CMakeLists.txt @@ -4,12 +4,13 @@ add_clang_tool(clang-pseudo ClangPseudo.cpp ) -set(CLANG_PSEUDO_LIB_DEPS +clang_target_link_libraries(clang-pseudo + PRIVATE clangBasic - clangToolingSyntaxPseudo ) -clang_target_link_libraries(clang-pseudo +target_link_libraries(clang-pseudo PRIVATE - ${CLANG_PSEUDO_LIB_DEPS} + clangPseudo ) + diff --git a/clang/tools/clang-pseudo/ClangPseudo.cpp b/clang-tools-extra/pseudo/tool/ClangPseudo.cpp similarity index 81% rename from clang/tools/clang-pseudo/ClangPseudo.cpp rename to clang-tools-extra/pseudo/tool/ClangPseudo.cpp index c03cc0aaf8d91..076ec5b733326 100644 --- a/clang/tools/clang-pseudo/ClangPseudo.cpp +++ b/clang-tools-extra/pseudo/tool/ClangPseudo.cpp @@ -6,18 +6,18 @@ // //===----------------------------------------------------------------------===// +#include "clang-pseudo/DirectiveMap.h" +#include "clang-pseudo/Grammar.h" +#include "clang-pseudo/LRGraph.h" +#include "clang-pseudo/LRTable.h" +#include "clang-pseudo/Token.h" #include "clang/Basic/LangOptions.h" -#include "clang/Tooling/Syntax/Pseudo/DirectiveMap.h" -#include "clang/Tooling/Syntax/Pseudo/Grammar.h" -#include "clang/Tooling/Syntax/Pseudo/LRGraph.h" -#include "clang/Tooling/Syntax/Pseudo/LRTable.h" -#include "clang/Tooling/Syntax/Pseudo/Token.h" #include "llvm/ADT/StringExtras.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/FormatVariadic.h" #include "llvm/Support/MemoryBuffer.h" -using clang::syntax::pseudo::Grammar; +using clang::pseudo::Grammar; using llvm::cl::desc; using llvm::cl::init; using llvm::cl::opt; @@ -64,19 +64,17 @@ int main(int argc, char *argv[]) { if (PrintGrammar) llvm::outs() << G->dump(); if (PrintGraph) - llvm::outs() << clang::syntax::pseudo::LRGraph::buildLR0(*G).dumpForTests( - *G); + llvm::outs() << clang::pseudo::LRGraph::buildLR0(*G).dumpForTests(*G); if (PrintTable) - llvm::outs() << clang::syntax::pseudo::LRTable::buildSLR(*G).dumpForTests( - *G); + llvm::outs() << clang::pseudo::LRTable::buildSLR(*G).dumpForTests(*G); return 0; } if (Source.getNumOccurrences()) { std::string Text = readOrDie(Source); clang::LangOptions LangOpts; // FIXME: use real options. - auto Stream = clang::syntax::pseudo::lex(Text, LangOpts); - auto Structure = clang::syntax::pseudo::DirectiveMap::parse(Stream); + auto Stream = clang::pseudo::lex(Text, LangOpts); + auto Structure = clang::pseudo::DirectiveMap::parse(Stream); if (PrintDirectiveMap) llvm::outs() << Structure; diff --git a/clang/unittests/Tooling/Syntax/Pseudo/CMakeLists.txt b/clang-tools-extra/pseudo/unittests/CMakeLists.txt similarity index 72% rename from clang/unittests/Tooling/Syntax/Pseudo/CMakeLists.txt rename to clang-tools-extra/pseudo/unittests/CMakeLists.txt index 0ece44ac19e62..e4919f8a12212 100644 --- a/clang/unittests/Tooling/Syntax/Pseudo/CMakeLists.txt +++ b/clang-tools-extra/pseudo/unittests/CMakeLists.txt @@ -2,7 +2,8 @@ set(LLVM_LINK_COMPONENTS Support ) -add_clang_unittest(ClangPseudoTests +add_custom_target(ClangPseudoUnitTests) +add_unittest(ClangPseudoUnitTests ClangPseudoTests DirectiveMapTest.cpp GrammarTest.cpp LRTableTest.cpp @@ -13,11 +14,10 @@ clang_target_link_libraries(ClangPseudoTests PRIVATE clangBasic clangLex - clangToolingSyntaxPseudo clangTesting ) target_link_libraries(ClangPseudoTests PRIVATE - LLVMTestingSupport + clangPseudo ) diff --git a/clang/unittests/Tooling/Syntax/Pseudo/DirectiveMapTest.cpp b/clang-tools-extra/pseudo/unittests/DirectiveMapTest.cpp similarity index 97% rename from clang/unittests/Tooling/Syntax/Pseudo/DirectiveMapTest.cpp rename to clang-tools-extra/pseudo/unittests/DirectiveMapTest.cpp index 1c3220b364738..1feae342655be 100644 --- a/clang/unittests/Tooling/Syntax/Pseudo/DirectiveMapTest.cpp +++ b/clang-tools-extra/pseudo/unittests/DirectiveMapTest.cpp @@ -6,18 +6,17 @@ // //===----------------------------------------------------------------------===// -#include "clang/Tooling/Syntax/Pseudo/DirectiveMap.h" +#include "clang-pseudo/DirectiveMap.h" +#include "clang-pseudo/Token.h" #include "clang/Basic/LangOptions.h" #include "clang/Basic/TokenKinds.h" -#include "clang/Tooling/Syntax/Pseudo/Token.h" #include "llvm/ADT/StringExtras.h" #include "llvm/ADT/StringRef.h" #include "gmock/gmock.h" #include "gtest/gtest.h" namespace clang { -namespace syntax { namespace pseudo { namespace { @@ -148,5 +147,4 @@ TEST(DirectiveMap, ParseBroken) { } // namespace } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/unittests/Tooling/Syntax/Pseudo/GrammarTest.cpp b/clang-tools-extra/pseudo/unittests/GrammarTest.cpp similarity index 98% rename from clang/unittests/Tooling/Syntax/Pseudo/GrammarTest.cpp rename to clang-tools-extra/pseudo/unittests/GrammarTest.cpp index 1b928b34062a5..2a107063fd679 100644 --- a/clang/unittests/Tooling/Syntax/Pseudo/GrammarTest.cpp +++ b/clang-tools-extra/pseudo/unittests/GrammarTest.cpp @@ -6,13 +6,12 @@ // //===----------------------------------------------------------------------===// -#include "clang/Tooling/Syntax/Pseudo/Grammar.h" +#include "clang-pseudo/Grammar.h" #include "gmock/gmock.h" #include "gtest/gtest.h" #include <memory> namespace clang { -namespace syntax { namespace pseudo { namespace { @@ -157,5 +156,4 @@ simple-type-specifier := INT } // namespace } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/unittests/Tooling/Syntax/Pseudo/LRTableTest.cpp b/clang-tools-extra/pseudo/unittests/LRTableTest.cpp similarity index 93% rename from clang/unittests/Tooling/Syntax/Pseudo/LRTableTest.cpp rename to clang-tools-extra/pseudo/unittests/LRTableTest.cpp index 88ac697ce250d..9823159e5517a 100644 --- a/clang/unittests/Tooling/Syntax/Pseudo/LRTableTest.cpp +++ b/clang-tools-extra/pseudo/unittests/LRTableTest.cpp @@ -6,15 +6,14 @@ // //===----------------------------------------------------------------------===// -#include "clang/Tooling/Syntax/Pseudo/LRTable.h" +#include "clang-pseudo/LRTable.h" +#include "clang-pseudo/Grammar.h" #include "clang/Basic/TokenKinds.h" -#include "clang/Tooling/Syntax/Pseudo/Grammar.h" #include "gmock/gmock.h" #include "gtest/gtest.h" #include <vector> namespace clang { -namespace syntax { namespace pseudo { namespace { @@ -52,5 +51,4 @@ TEST(LRTable, Builder) { } // namespace } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/unittests/Tooling/Syntax/Pseudo/TokenTest.cpp b/clang-tools-extra/pseudo/unittests/TokenTest.cpp similarity index 98% rename from clang/unittests/Tooling/Syntax/Pseudo/TokenTest.cpp rename to clang-tools-extra/pseudo/unittests/TokenTest.cpp index c4314570f2e9e..1357d23501193 100644 --- a/clang/unittests/Tooling/Syntax/Pseudo/TokenTest.cpp +++ b/clang-tools-extra/pseudo/unittests/TokenTest.cpp @@ -6,14 +6,13 @@ // //===----------------------------------------------------------------------===// -#include "clang/Tooling/Syntax/Pseudo/Token.h" +#include "clang-pseudo/Token.h" #include "clang/Basic/LangOptions.h" #include "clang/Basic/TokenKinds.h" #include "gmock/gmock.h" #include "gtest/gtest.h" namespace clang { -namespace syntax { namespace pseudo { namespace { @@ -191,5 +190,4 @@ TEST(TokenTest, DropComments) { } // namespace } // namespace pseudo -} // namespace syntax } // namespace clang diff --git a/clang/lib/Tooling/Syntax/CMakeLists.txt b/clang/lib/Tooling/Syntax/CMakeLists.txt index f8d9184977e8a..e933faeb0f506 100644 --- a/clang/lib/Tooling/Syntax/CMakeLists.txt +++ b/clang/lib/Tooling/Syntax/CMakeLists.txt @@ -19,5 +19,3 @@ add_clang_library(clangToolingSyntax DEPENDS omp_gen ) - -add_subdirectory(Pseudo) diff --git a/clang/test/Syntax/lit.local.cfg b/clang/test/Syntax/lit.local.cfg deleted file mode 100644 index 5a2e1cd0efd03..0000000000000 --- a/clang/test/Syntax/lit.local.cfg +++ /dev/null @@ -1,4 +0,0 @@ -cxx_bnf_file = os.path.join(config.clang_src_dir, 'lib', 'Tooling', 'Syntax', - 'Pseudo', 'cxx.bnf') -config.substitutions.append(('%cxx-bnf-file', - '%s' % (cxx_bnf_file))) diff --git a/clang/tools/CMakeLists.txt b/clang/tools/CMakeLists.txt index 933b428d8ca62..b071a776b32ae 100644 --- a/clang/tools/CMakeLists.txt +++ b/clang/tools/CMakeLists.txt @@ -14,7 +14,6 @@ add_clang_subdirectory(clang-offload-bundler) add_clang_subdirectory(clang-offload-wrapper) add_clang_subdirectory(clang-scan-deps) add_clang_subdirectory(clang-repl) -add_clang_subdirectory(clang-pseudo) add_clang_subdirectory(c-index-test) diff --git a/clang/unittests/Tooling/Syntax/CMakeLists.txt b/clang/unittests/Tooling/Syntax/CMakeLists.txt index a21d558c481cb..174f3e7bf5732 100644 --- a/clang/unittests/Tooling/Syntax/CMakeLists.txt +++ b/clang/unittests/Tooling/Syntax/CMakeLists.txt @@ -28,5 +28,3 @@ target_link_libraries(SyntaxTests PRIVATE LLVMTestingSupport ) - -add_subdirectory(Pseudo) _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits