1//===-- llvm/Analysis/Verifier.h - LLVM IR Verifier -------------*- 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 the function verifier interface, that can be used for some 11// sanity checking of input to the system, and for checking that transformations 12// haven't done something bad. 13// 14// Note that this does not provide full 'java style' security and verifications, 15// instead it just tries to ensure that code is well formed. 16// 17// To see what specifically is checked, look at the top of Verifier.cpp 18// 19//===----------------------------------------------------------------------===// 20 21#ifndef LLVM_ANALYSIS_VERIFIER_H 22#define LLVM_ANALYSIS_VERIFIER_H 23 24#include <string> 25 26namespace llvm { 27 28class FunctionPass; 29class Module; 30class Function; 31 32/// @brief An enumeration to specify the action to be taken if errors found. 33/// 34/// This enumeration is used in the functions below to indicate what should 35/// happen if the verifier finds errors. Each of the functions that uses 36/// this enumeration as an argument provides a default value for it. The 37/// actions are listed below. 38enum VerifierFailureAction { 39 AbortProcessAction, ///< verifyModule will print to stderr and abort() 40 PrintMessageAction, ///< verifyModule will print to stderr and return true 41 ReturnStatusAction ///< verifyModule will just return true 42}; 43 44/// @brief Create a verifier pass. 45/// 46/// Check a module or function for validity. When the pass is used, the 47/// action indicated by the \p action argument will be used if errors are 48/// found. 49FunctionPass *createVerifierPass( 50 VerifierFailureAction action = AbortProcessAction ///< Action to take 51); 52 53/// @brief Check a module for errors. 54/// 55/// If there are no errors, the function returns false. If an error is found, 56/// the action taken depends on the \p action parameter. 57/// This should only be used for debugging, because it plays games with 58/// PassManagers and stuff. 59 60bool verifyModule( 61 const Module &M, ///< The module to be verified 62 VerifierFailureAction action = AbortProcessAction, ///< Action to take 63 std::string *ErrorInfo = 0 ///< Information about failures. 64); 65 66// verifyFunction - Check a function for errors, useful for use when debugging a 67// pass. 68bool verifyFunction( 69 const Function &F, ///< The function to be verified 70 VerifierFailureAction action = AbortProcessAction ///< Action to take 71); 72 73} // End llvm namespace 74 75#endif 76