1
//===-- llvm/Analysis/Verifier.h - LLVM IR Verifier -------------*- C++ -*-===//
3
// The LLVM Compiler Infrastructure
5
// This file is distributed under the University of Illinois Open Source
6
// 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
32
/// @brief An enumeration to specify the action to be taken if errors found.
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
44
/// @brief Create a verifier pass.
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
49
FunctionPass *createVerifierPass(
50
VerifierFailureAction action = AbortProcessAction ///< Action to take
53
/// @brief Check a module for errors.
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.
61
const Module &M, ///< The module to be verified
62
VerifierFailureAction action = AbortProcessAction, ///< Action to take
63
std::string *ErrorInfo = 0 ///< Information about failures.
66
// verifyFunction - Check a function for errors, useful for use when debugging a
69
const Function &F, ///< The function to be verified
70
VerifierFailureAction action = AbortProcessAction ///< Action to take
73
} // End llvm namespace