1//===- Transforms/Instrumentation.h - Instrumentation passes ----*- C++ -*-===// 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// This file defines constructor functions for instrumentation passes. 11// 12//===----------------------------------------------------------------------===// 13 14#ifndef LLVM_TRANSFORMS_INSTRUMENTATION_H 15#define LLVM_TRANSFORMS_INSTRUMENTATION_H 16 17namespace llvm { 18 19class ModulePass; 20class FunctionPass; 21 22// Insert edge profiling instrumentation 23ModulePass *createEdgeProfilerPass(); 24 25// Insert optimal edge profiling instrumentation 26ModulePass *createOptimalEdgeProfilerPass(); 27 28// Insert path profiling instrumentation 29ModulePass *createPathProfilerPass(); 30 31// Insert GCOV profiling instrumentation 32ModulePass *createGCOVProfilerPass(bool EmitNotes = true, bool EmitData = true, 33 bool Use402Format = false, 34 bool UseExtraChecksum = false); 35 36// Insert AddressSanitizer (address sanity checking) instrumentation 37ModulePass *createAddressSanitizerPass(); 38// Insert ThreadSanitizer (race detection) instrumentation 39FunctionPass *createThreadSanitizerPass(); 40 41 42// BoundsChecking - This pass instruments the code to perform run-time bounds 43// checking on loads, stores, and other memory intrinsics. 44// Penalty is the maximum run-time that is acceptable for the user. 45// 46FunctionPass *createBoundsCheckingPass(unsigned Penalty = 5); 47 48} // End llvm namespace 49 50#endif 51