• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/Types.h"
23  
24  #ifdef __cplusplus
25  extern "C" {
26  #endif
27  
28  /**
29   * @defgroup LLVMCAnalysis Analysis
30   * @ingroup LLVMC
31   *
32   * @{
33   */
34  
35  typedef enum {
36    LLVMAbortProcessAction, /* verifier will print to stderr and abort() */
37    LLVMPrintMessageAction, /* verifier will print to stderr and return 1 */
38    LLVMReturnStatusAction  /* verifier will just return 1 */
39  } LLVMVerifierFailureAction;
40  
41  
42  /* Verifies that a module is valid, taking the specified action if not.
43     Optionally returns a human-readable description of any invalid constructs.
44     OutMessage must be disposed with LLVMDisposeMessage. */
45  LLVMBool LLVMVerifyModule(LLVMModuleRef M, LLVMVerifierFailureAction Action,
46                            char **OutMessage);
47  
48  /* Verifies that a single function is valid, taking the specified action. Useful
49     for debugging. */
50  LLVMBool LLVMVerifyFunction(LLVMValueRef Fn, LLVMVerifierFailureAction Action);
51  
52  /* Open up a ghostview window that displays the CFG of the current function.
53     Useful for debugging. */
54  void LLVMViewFunctionCFG(LLVMValueRef Fn);
55  void LLVMViewFunctionCFGOnly(LLVMValueRef Fn);
56  
57  /**
58   * @}
59   */
60  
61  #ifdef __cplusplus
62  }
63  #endif
64  
65  #endif
66