1*3fef2d26SRiver Riddle //===- TestCallGraph.cpp - Test callgraph construction and iteration ------===// 2*3fef2d26SRiver Riddle // 3*3fef2d26SRiver Riddle // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*3fef2d26SRiver Riddle // See https://llvm.org/LICENSE.txt for license information. 5*3fef2d26SRiver Riddle // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*3fef2d26SRiver Riddle // 7*3fef2d26SRiver Riddle //===----------------------------------------------------------------------===// 8*3fef2d26SRiver Riddle // 9*3fef2d26SRiver Riddle // This file contains test passes for constructing and iterating over a 10*3fef2d26SRiver Riddle // callgraph. 11*3fef2d26SRiver Riddle // 12*3fef2d26SRiver Riddle //===----------------------------------------------------------------------===// 13*3fef2d26SRiver Riddle 14*3fef2d26SRiver Riddle #include "mlir/Analysis/CallGraph.h" 15*3fef2d26SRiver Riddle #include "mlir/Pass/Pass.h" 16*3fef2d26SRiver Riddle 17*3fef2d26SRiver Riddle using namespace mlir; 18*3fef2d26SRiver Riddle 19*3fef2d26SRiver Riddle namespace { 20*3fef2d26SRiver Riddle struct TestCallGraphPass 21*3fef2d26SRiver Riddle : public PassWrapper<TestCallGraphPass, OperationPass<ModuleOp>> { 22*3fef2d26SRiver Riddle void runOnOperation() override { 23*3fef2d26SRiver Riddle llvm::errs() << "Testing : " << getOperation()->getAttr("test.name") 24*3fef2d26SRiver Riddle << "\n"; 25*3fef2d26SRiver Riddle getAnalysis<CallGraph>().print(llvm::errs()); 26*3fef2d26SRiver Riddle } 27*3fef2d26SRiver Riddle }; 28*3fef2d26SRiver Riddle } // end anonymous namespace 29*3fef2d26SRiver Riddle 30*3fef2d26SRiver Riddle namespace mlir { 31*3fef2d26SRiver Riddle namespace test { 32*3fef2d26SRiver Riddle void registerTestCallGraphPass() { 33*3fef2d26SRiver Riddle PassRegistration<TestCallGraphPass> pass( 34*3fef2d26SRiver Riddle "test-print-callgraph", "Print the contents of a constructed callgraph."); 35*3fef2d26SRiver Riddle } 36*3fef2d26SRiver Riddle } // namespace test 37*3fef2d26SRiver Riddle } // namespace mlir 38