1 //===- CountVisits.cpp ----------------------------------------------------===// 2 // 3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4 // See https://llvm.org/LICENSE.txt for license information. 5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #include "llvm/Transforms/Utils/CountVisits.h" 10 #include "llvm/ADT/Statistic.h" 11 #include "llvm/IR/Function.h" 12 #include "llvm/IR/PassManager.h" 13 14 using namespace llvm; 15 16 #define DEBUG_TYPE "count-visits" 17 18 STATISTIC(MaxVisited, "Max number of times we visited a function"); 19 20 PreservedAnalyses CountVisitsPass::run(Function &F, FunctionAnalysisManager &) { 21 uint32_t Count = Counts[F.getName()] + 1; 22 Counts[F.getName()] = Count; 23 if (Count > MaxVisited) 24 MaxVisited = Count; 25 return PreservedAnalyses::all(); 26 } 27