xref: /llvm-project/mlir/test/lib/Analysis/TestCallGraph.cpp (revision 830b9b072d8458ee89c48f00d4de59456c9f467f)
13fef2d26SRiver Riddle //===- TestCallGraph.cpp - Test callgraph construction and iteration ------===//
23fef2d26SRiver Riddle //
33fef2d26SRiver Riddle // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
43fef2d26SRiver Riddle // See https://llvm.org/LICENSE.txt for license information.
53fef2d26SRiver Riddle // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
63fef2d26SRiver Riddle //
73fef2d26SRiver Riddle //===----------------------------------------------------------------------===//
83fef2d26SRiver Riddle //
93fef2d26SRiver Riddle // This file contains test passes for constructing and iterating over a
103fef2d26SRiver Riddle // callgraph.
113fef2d26SRiver Riddle //
123fef2d26SRiver Riddle //===----------------------------------------------------------------------===//
133fef2d26SRiver Riddle 
143fef2d26SRiver Riddle #include "mlir/Analysis/CallGraph.h"
1536d3efeaSRiver Riddle #include "mlir/IR/BuiltinOps.h"
163fef2d26SRiver Riddle #include "mlir/Pass/Pass.h"
173fef2d26SRiver Riddle 
183fef2d26SRiver Riddle using namespace mlir;
193fef2d26SRiver Riddle 
203fef2d26SRiver Riddle namespace {
213fef2d26SRiver Riddle struct TestCallGraphPass
223fef2d26SRiver Riddle     : public PassWrapper<TestCallGraphPass, OperationPass<ModuleOp>> {
MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID__anonf4aad34c0111::TestCallGraphPass235e50dd04SRiver Riddle   MLIR_DEFINE_EXPLICIT_INTERNAL_INLINE_TYPE_ID(TestCallGraphPass)
245e50dd04SRiver Riddle 
25b5e22e6dSMehdi Amini   StringRef getArgument() const final { return "test-print-callgraph"; }
getDescription__anonf4aad34c0111::TestCallGraphPass26b5e22e6dSMehdi Amini   StringRef getDescription() const final {
27b5e22e6dSMehdi Amini     return "Print the contents of a constructed callgraph.";
28b5e22e6dSMehdi Amini   }
runOnOperation__anonf4aad34c0111::TestCallGraphPass293fef2d26SRiver Riddle   void runOnOperation() override {
30*830b9b07SMehdi Amini     llvm::errs() << "Testing : "
31*830b9b07SMehdi Amini                  << getOperation()->getDiscardableAttr("test.name") << "\n";
323fef2d26SRiver Riddle     getAnalysis<CallGraph>().print(llvm::errs());
333fef2d26SRiver Riddle   }
343fef2d26SRiver Riddle };
35be0a7e9fSMehdi Amini } // namespace
363fef2d26SRiver Riddle 
373fef2d26SRiver Riddle namespace mlir {
383fef2d26SRiver Riddle namespace test {
registerTestCallGraphPass()39b5e22e6dSMehdi Amini void registerTestCallGraphPass() { PassRegistration<TestCallGraphPass>(); }
403fef2d26SRiver Riddle } // namespace test
413fef2d26SRiver Riddle } // namespace mlir
42