15f757f3fSDimitry Andric //===- StructuralHash.cpp - Function Hash Printing ------------------------===// 25f757f3fSDimitry Andric // 35f757f3fSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 45f757f3fSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 55f757f3fSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65f757f3fSDimitry Andric // 75f757f3fSDimitry Andric //===----------------------------------------------------------------------===// 85f757f3fSDimitry Andric // 95f757f3fSDimitry Andric // This file defines the StructuralHashPrinterPass which is used to show 105f757f3fSDimitry Andric // the structural hash of all functions in a module and the module itself. 115f757f3fSDimitry Andric // 125f757f3fSDimitry Andric //===----------------------------------------------------------------------===// 135f757f3fSDimitry Andric 145f757f3fSDimitry Andric #include "llvm/Analysis/StructuralHash.h" 15*0fca6ea1SDimitry Andric #include "llvm/IR/Module.h" 165f757f3fSDimitry Andric #include "llvm/IR/StructuralHash.h" 175f757f3fSDimitry Andric #include "llvm/Support/CommandLine.h" 185f757f3fSDimitry Andric 195f757f3fSDimitry Andric using namespace llvm; 205f757f3fSDimitry Andric 215f757f3fSDimitry Andric PreservedAnalyses StructuralHashPrinterPass::run(Module &M, 225f757f3fSDimitry Andric ModuleAnalysisManager &MAM) { 235f757f3fSDimitry Andric OS << "Module Hash: " 245f757f3fSDimitry Andric << Twine::utohexstr(StructuralHash(M, EnableDetailedStructuralHash)) 255f757f3fSDimitry Andric << "\n"; 265f757f3fSDimitry Andric for (Function &F : M) { 275f757f3fSDimitry Andric if (F.isDeclaration()) 285f757f3fSDimitry Andric continue; 295f757f3fSDimitry Andric OS << "Function " << F.getName() << " Hash: " 305f757f3fSDimitry Andric << Twine::utohexstr(StructuralHash(F, EnableDetailedStructuralHash)) 315f757f3fSDimitry Andric << "\n"; 325f757f3fSDimitry Andric } 335f757f3fSDimitry Andric return PreservedAnalyses::all(); 345f757f3fSDimitry Andric } 35