1 //===- EntryExitInstrumenter.h - Function Entry/Exit Instrumentation ------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // EntryExitInstrumenter pass - Instrument function entry/exit with calls to 11 // mcount(), @__cyg_profile_func_{enter,exit} and the like. There are two 12 // variants, intended to run pre- and post-inlining, respectively. 13 // 14 //===----------------------------------------------------------------------===// 15 16 #ifndef LLVM_TRANSFORMS_UTILS_ENTRYEXITINSTRUMENTER_H 17 #define LLVM_TRANSFORMS_UTILS_ENTRYEXITINSTRUMENTER_H 18 19 #include "llvm/IR/PassManager.h" 20 21 namespace llvm { 22 23 class Function; 24 25 struct EntryExitInstrumenterPass 26 : public PassInfoMixin<EntryExitInstrumenterPass> { EntryExitInstrumenterPassEntryExitInstrumenterPass27 EntryExitInstrumenterPass(bool PostInlining) : PostInlining(PostInlining) {} 28 29 PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM); 30 31 bool PostInlining; 32 }; 33 34 } // namespace llvm 35 36 #endif // LLVM_TRANSFORMS_UTILS_ENTRYEXITINSTRUMENTER_H 37