The Legacy PM was deprecated for the optimization pipeline in LLVM 14 [1] (the support was removed altogether in the following release). This patch removes the original Hello example that was introduced to illustrate the Legacy PM. The Hello example no longer works and hence is deleted. The corresponding documentation is also removed. Note, Hello example for the new PM is located in * llvm/lib/Transforms/Utils/HelloWorld.cpp and documented in * WritingAnLLVMNewPMPass.rst. [1] https://releases.llvm.org/14.0.0/docs/ReleaseNotes.html#changes-to-the-llvm-ir
67 lines
2.3 KiB
C++
67 lines
2.3 KiB
C++
// REQUIRES: plugins
|
|
// RUN: clang-tidy -checks='-*,mytest*' --list-checks -load %llvmshlibdir/CTTestTidyModule%pluginext | FileCheck --check-prefix=CHECK-LIST %s
|
|
// CHECK-LIST: Enabled checks:
|
|
// CHECK-LIST-NEXT: mytest1
|
|
// CHECK-LIST-NEXT: mytest2
|
|
// RUN: clang-tidy -checks='-*,mytest*,misc-definitions-in-headers' -load %llvmshlibdir/CTTestTidyModule%pluginext /dev/null -- -xc 2>&1 | FileCheck %s
|
|
// CHECK: 3 warnings generated.
|
|
// CHECK-NEXT: warning: mytest success [misc-definitions-in-headers,mytest1,mytest2]
|
|
|
|
#include "clang-tidy/ClangTidy.h"
|
|
#include "clang-tidy/ClangTidyCheck.h"
|
|
#include "clang-tidy/ClangTidyModule.h"
|
|
#include "clang-tidy/ClangTidyModuleRegistry.h"
|
|
#include "clang/AST/ASTContext.h"
|
|
#include "clang/ASTMatchers/ASTMatchFinder.h"
|
|
|
|
using namespace clang;
|
|
using namespace clang::tidy;
|
|
using namespace clang::ast_matchers;
|
|
|
|
namespace {
|
|
class MyTestCheck : public ClangTidyCheck {
|
|
|
|
public:
|
|
MyTestCheck(StringRef Name, ClangTidyContext *Context)
|
|
: ClangTidyCheck(Name, Context) {}
|
|
|
|
void registerMatchers(ast_matchers::MatchFinder *Finder) override {
|
|
Finder->addMatcher(translationUnitDecl().bind("tu"), this);
|
|
}
|
|
|
|
void check(const ast_matchers::MatchFinder::MatchResult &Result) override {
|
|
auto S = Result.Nodes.getNodeAs<TranslationUnitDecl>("tu");
|
|
if (S)
|
|
diag("mytest success");
|
|
}
|
|
|
|
private:
|
|
};
|
|
|
|
class CTTestModule : public ClangTidyModule {
|
|
public:
|
|
void addCheckFactories(ClangTidyCheckFactories &CheckFactories) override {
|
|
CheckFactories.registerCheck<MyTestCheck>("mytest1");
|
|
CheckFactories.registerCheck<MyTestCheck>("mytest2");
|
|
// intentionally collide with an existing test name, overriding it
|
|
CheckFactories.registerCheck<MyTestCheck>("misc-definitions-in-headers");
|
|
}
|
|
};
|
|
} // namespace
|
|
|
|
namespace tidy1 {
|
|
// Register the CTTestTidyModule using this statically initialized variable.
|
|
static ClangTidyModuleRegistry::Add<::CTTestModule>
|
|
X("mytest-module", "Adds my checks.");
|
|
} // namespace tidy1
|
|
|
|
namespace tidy2 {
|
|
// intentionally collide with an existing test group name, merging with it
|
|
static ClangTidyModuleRegistry::Add<::CTTestModule>
|
|
X("misc-module", "Adds miscellaneous lint checks.");
|
|
} // namespace tidy2
|
|
|
|
// This anchor is used to force the linker to link in the generated object file
|
|
// and thus register the CTTestModule.
|
|
volatile int CTTestModuleAnchorSource = 0;
|