holdingarea/llvm/llvm-2.7/include/llvm-c/Analysis.h
branchbug235_bringup_0
changeset 20 d2d6724aef32
child 24 a3f46bb01be2
equal deleted inserted replaced
19:da7c1a80df0d 20:d2d6724aef32
       
     1 /*===-- llvm-c/Analysis.h - Analysis Library C Interface --------*- 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 header declares the C interface to libLLVMAnalysis.a, which           *|
       
    11 |* implements various analyses of the LLVM IR.                                *|
       
    12 |*                                                                            *|
       
    13 |* Many exotic languages can interoperate with C code but have a harder time  *|
       
    14 |* with C++ due to name mangling. So in addition to C, this interface enables *|
       
    15 |* tools written in such languages.                                           *|
       
    16 |*                                                                            *|
       
    17 \*===----------------------------------------------------------------------===*/
       
    18 
       
    19 #ifndef LLVM_C_ANALYSIS_H
       
    20 #define LLVM_C_ANALYSIS_H
       
    21 
       
    22 #include "llvm-c/Core.h"
       
    23 
       
    24 #ifdef __cplusplus
       
    25 extern "C" {
       
    26 #endif
       
    27 
       
    28 
       
    29 typedef enum {
       
    30   LLVMAbortProcessAction, /* verifier will print to stderr and abort() */
       
    31   LLVMPrintMessageAction, /* verifier will print to stderr and return 1 */
       
    32   LLVMReturnStatusAction  /* verifier will just return 1 */
       
    33 } LLVMVerifierFailureAction;
       
    34 
       
    35 
       
    36 /* Verifies that a module is valid, taking the specified action if not.
       
    37    Optionally returns a human-readable description of any invalid constructs.
       
    38    OutMessage must be disposed with LLVMDisposeMessage. */
       
    39 LLVMBool LLVMVerifyModule(LLVMModuleRef M, LLVMVerifierFailureAction Action,
       
    40                           char **OutMessage);
       
    41 
       
    42 /* Verifies that a single function is valid, taking the specified action. Useful
       
    43    for debugging. */
       
    44 LLVMBool LLVMVerifyFunction(LLVMValueRef Fn, LLVMVerifierFailureAction Action);
       
    45 
       
    46 /* Open up a ghostview window that displays the CFG of the current function.
       
    47    Useful for debugging. */
       
    48 void LLVMViewFunctionCFG(LLVMValueRef Fn);
       
    49 void LLVMViewFunctionCFGOnly(LLVMValueRef Fn);
       
    50 
       
    51 #ifdef __cplusplus
       
    52 }
       
    53 #endif
       
    54 
       
    55 #endif