X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FAnalysis%2FVerifier.h;h=ce8aeef07645b62ea51d2b31213b3a40dd8e2d86;hb=75b51621540c23ddfc1e9ef6b4dc803453d9d122;hp=427015c6c6456561b0255a04d490d5985ad334a3;hpb=6fbcc26f1460eaee4e0eb8b426fc1ff0c7af11be;p=oota-llvm.git diff --git a/include/llvm/Analysis/Verifier.h b/include/llvm/Analysis/Verifier.h index 427015c6c64..ce8aeef0764 100644 --- a/include/llvm/Analysis/Verifier.h +++ b/include/llvm/Analysis/Verifier.h @@ -1,10 +1,10 @@ -//===-- llvm/Analysis/Verifier.h - Module Verifier --------------*- C++ -*-===// -// +//===-- llvm/Analysis/Verifier.h - LLVM IR Verifier -------------*- C++ -*-===// +// // The LLVM Compiler Infrastructure // -// This file was developed by the LLVM research group and is distributed under -// the University of Illinois Open Source License. See LICENSE.TXT for details. -// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// //===----------------------------------------------------------------------===// // // This file defines the function verifier interface, that can be used for some @@ -21,23 +21,55 @@ #ifndef LLVM_ANALYSIS_VERIFIER_H #define LLVM_ANALYSIS_VERIFIER_H +#include + +namespace llvm { + class FunctionPass; class Module; class Function; -// createVerifierPass - Check a module or function for validity. If errors are -// detected, error messages corresponding to the problem are printed to stderr. -// -FunctionPass *createVerifierPass(); +/// @brief An enumeration to specify the action to be taken if errors found. +/// +/// This enumeration is used in the functions below to indicate what should +/// happen if the verifier finds errors. Each of the functions that uses +/// this enumeration as an argument provides a default value for it. The +/// actions are listed below. +enum VerifierFailureAction { + AbortProcessAction, ///< verifyModule will print to stderr and abort() + PrintMessageAction, ///< verifyModule will print to stderr and return true + ReturnStatusAction ///< verifyModule will just return true +}; -// verifyModule - Check a module for errors, printing messages on stderr. -// Return true if the module is corrupt. This should only be used for -// debugging, because it plays games with PassManagers and stuff. -// -bool verifyModule(const Module &M); +/// @brief Create a verifier pass. +/// +/// Check a module or function for validity. When the pass is used, the +/// action indicated by the \p action argument will be used if errors are +/// found. +FunctionPass *createVerifierPass( + VerifierFailureAction action = AbortProcessAction ///< Action to take +); + +/// @brief Check a module for errors. +/// +/// If there are no errors, the function returns false. If an error is found, +/// the action taken depends on the \p action parameter. +/// This should only be used for debugging, because it plays games with +/// PassManagers and stuff. + +bool verifyModule( + const Module &M, ///< The module to be verified + VerifierFailureAction action = AbortProcessAction, ///< Action to take + std::string *ErrorInfo = 0 ///< Information about failures. +); // verifyFunction - Check a function for errors, useful for use when debugging a // pass. -bool verifyFunction(const Function &F); +bool verifyFunction( + const Function &F, ///< The function to be verified + VerifierFailureAction action = AbortProcessAction ///< Action to take +); + +} // End llvm namespace #endif