LLVM  14.0.0git
BitWriter.h
Go to the documentation of this file.
1 /*===-- llvm-c/BitWriter.h - BitWriter 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 libLLVMBitWriter.a, which *|
11 |* implements output of the LLVM bitcode format. *|
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_BITWRITER_H
20 #define LLVM_C_BITWRITER_H
21 
22 #include "llvm-c/ExternC.h"
23 #include "llvm-c/Types.h"
24 
26 
27 /**
28  * @defgroup LLVMCBitWriter Bit Writer
29  * @ingroup LLVMC
30  *
31  * @{
32  */
33 
34 /*===-- Operations on modules ---------------------------------------------===*/
35 
36 /** Writes a module to the specified path. Returns 0 on success. */
37 int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path);
38 
39 /** Writes a module to an open file descriptor. Returns 0 on success. */
40 int LLVMWriteBitcodeToFD(LLVMModuleRef M, int FD, int ShouldClose,
41  int Unbuffered);
42 
43 /** Deprecated for LLVMWriteBitcodeToFD. Writes a module to an open file
44  descriptor. Returns 0 on success. Closes the Handle. */
46 
47 /** Writes a module to a new memory buffer and returns it. */
49 
50 /**
51  * @}
52  */
53 
55 
56 #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
LLVMWriteBitcodeToMemoryBuffer
LLVMMemoryBufferRef LLVMWriteBitcodeToMemoryBuffer(LLVMModuleRef M)
Writes a module to a new memory buffer and returns it.
Definition: BitWriter.cpp:43
LLVMWriteBitcodeToFile
int LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path)
Writes a module to the specified path.
Definition: BitWriter.cpp:20
LLVMWriteBitcodeToFD
int LLVMWriteBitcodeToFD(LLVMModuleRef M, int FD, int ShouldClose, int Unbuffered)
Writes a module to an open file descriptor.
Definition: BitWriter.cpp:31
LLVM_C_EXTERN_C_END
#define LLVM_C_EXTERN_C_END
Definition: ExternC.h:36
LLVM_C_EXTERN_C_BEGIN
#define LLVM_C_EXTERN_C_BEGIN
Definition: ExternC.h:35
LLVMMemoryBufferRef
struct LLVMOpaqueMemoryBuffer * LLVMMemoryBufferRef
LLVM uses a polymorphic type hierarchy which C cannot represent, therefore parameters must be passed ...
Definition: Types.h:48
LLVMWriteBitcodeToFileHandle
int LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int Handle)
Deprecated for LLVMWriteBitcodeToFD.
Definition: BitWriter.cpp:39
ExternC.h
LLVMModuleRef
struct LLVMOpaqueModule * LLVMModuleRef
The top-level container for all other LLVM Intermediate Representation (IR) objects.
Definition: Types.h:61