27 lines · cpp
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-exception6//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 14using namespace llvm;15 16#define DEBUG_TYPE "count-visits"17 18STATISTIC(MaxVisited, "Max number of times we visited a function");19 20PreservedAnalyses 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