LLVM  14.0.0git
Analysis.h
Go to the documentation of this file.
1 /*===-- llvm-c/Analysis.h - Analysis Library C Interface --------*- C++ -*-===*\
2 |* *|
3 |* Part of the LLVM Project, under the Apache License v2.0 with LLVM *|
4 |* Exceptions. *|
5 |* See https://llvm.org/LICENSE.txt for license information. *|
6 |* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception *|
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/ExternC.h"
23 #include "llvm-c/Types.h"
24 
26 
27 /**
28  * @defgroup LLVMCAnalysis Analysis
29  * @ingroup LLVMC
30  *
31  * @{
32  */
33 
34 typedef enum {
35  LLVMAbortProcessAction, /* verifier will print to stderr and abort() */
36  LLVMPrintMessageAction, /* verifier will print to stderr and return 1 */
37  LLVMReturnStatusAction /* verifier will just return 1 */
39 
40 
41 /* Verifies that a module is valid, taking the specified action if not.
42  Optionally returns a human-readable description of any invalid constructs.
43  OutMessage must be disposed with LLVMDisposeMessage. */
45  char **OutMessage);
46 
47 /* Verifies that a single function is valid, taking the specified action. Useful
48  for debugging. */
50 
51 /* Open up a ghostview window that displays the CFG of the current function.
52  Useful for debugging. */
55 
56 /**
57  * @}
58  */
59 
61 
62 #endif
M
We currently emits eax Perhaps this is what we really should generate is Is imull three or four cycles eax eax The current instruction priority is based on pattern complexity The former is more complex because it folds a load so the latter will not be emitted Perhaps we should use AddedComplexity to give LEA32r a higher priority We should always try to match LEA first since the LEA matching code does some estimate to determine whether the match is profitable if we care more about code then imull is better It s two bytes shorter than movl leal On a Pentium M
Definition: README.txt:252
Types.h
LLVMVerifyFunction
LLVMBool LLVMVerifyFunction(LLVMValueRef Fn, LLVMVerifierFailureAction Action)
Definition: Analysis.cpp:120
LLVMPrintMessageAction
@ LLVMPrintMessageAction
Definition: Analysis.h:36
LLVMAbortProcessAction
@ LLVMAbortProcessAction
Definition: Analysis.h:35
LLVMReturnStatusAction
@ LLVMReturnStatusAction
Definition: Analysis.h:37
LLVMVerifyModule
LLVMBool LLVMVerifyModule(LLVMModuleRef M, LLVMVerifierFailureAction Action, char **OutMessage)
Definition: Analysis.cpp:99
LLVMViewFunctionCFG
void LLVMViewFunctionCFG(LLVMValueRef Fn)
Definition: Analysis.cpp:131
LLVM_C_EXTERN_C_END
#define LLVM_C_EXTERN_C_END
Definition: ExternC.h:36
LLVMBool
int LLVMBool
Definition: Types.h:28
LLVM_C_EXTERN_C_BEGIN
#define LLVM_C_EXTERN_C_BEGIN
Definition: ExternC.h:35
LLVMVerifierFailureAction
LLVMVerifierFailureAction
Definition: Analysis.h:34
LLVMViewFunctionCFGOnly
void LLVMViewFunctionCFGOnly(LLVMValueRef Fn)
Definition: Analysis.cpp:136
LLVMValueRef
struct LLVMOpaqueValue * LLVMValueRef
Represents an individual value in LLVM IR.
Definition: Types.h:75
ExternC.h
LLVMModuleRef
struct LLVMOpaqueModule * LLVMModuleRef
The top-level container for all other LLVM Intermediate Representation (IR) objects.
Definition: Types.h:61