1 //===-- llvm/Analysis/Verifier.h - Module Verifier --------------*- C++ -*-===//
3 // The LLVM Compiler Infrastructure
5 // This file was developed by the LLVM research group and is distributed under
6 // the University of Illinois Open Source License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
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.
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.
17 // To see what specifically is checked, look at the top of Verifier.cpp
19 //===----------------------------------------------------------------------===//
21 #ifndef LLVM_ANALYSIS_VERIFIER_H
22 #define LLVM_ANALYSIS_VERIFIER_H
30 /// @brief An enumeration to specify the action to be taken if errors found.
32 /// This enumeration is used in the functions below to indicate what should
33 /// happen if the verifier finds errors. Each of the functions that uses
34 /// this enumeration as an argument provides a default value for it. The
35 /// actions are listed below.
36 enum VerifierFailureAction {
37 AbortProcessAction, ///< verifyModule will print to stderr and abort()
38 ThrowExceptionAction, ///< verifyModule will throw errors as std::string
39 PrintMessageAction, ///< verifyModule will print to stderr and return true
40 ReturnStatusAction ///< verifyModule will just return true
43 /// @brief Create a verifier pass.
45 /// Check a module or function for validity. When the pass is used, the
46 /// action indicated by the \p action argument will be used if errors are
48 FunctionPass *createVerifierPass(
49 VerifierFailureAction action = AbortProcessAction ///< Action to take
52 /// @brief Check a module for errors.
54 /// If there are no errors, the function returns false. If an error is found,
55 /// the action taken depends on the \p action parameter.
56 /// This should only be used for debugging, because it plays games with
57 /// PassManagers and stuff.
60 const Module &M, ///< The module to be verified
61 VerifierFailureAction action = AbortProcessAction ///< Action to take
64 // verifyFunction - Check a function for errors, useful for use when debugging a
67 const Function &F, ///< The function to be verified
68 VerifierFailureAction action = AbortProcessAction ///< Action to take
71 } // End llvm namespace