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 Aminivoid registerTestCallGraphPass() { PassRegistration<TestCallGraphPass>(); } 403fef2d26SRiver Riddle } // namespace test 413fef2d26SRiver Riddle } // namespace mlir 42