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 26 namespace llvm { 27 28 class FunctionPass; 29 class Module; 30 class 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. 38 enum 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. 49 FunctionPass *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 60 bool 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. 68 bool 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