Project Alice
Loading...
Searching...
No Matches
lto.h
Go to the documentation of this file.
1/*===-- llvm-c/lto.h - LTO Public 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 provides public interface to an abstract link time optimization*|
11|* library. LLVM provides an implementation of this interface for use with *|
12|* llvm bitcode files. *|
13|* *|
14\*===----------------------------------------------------------------------===*/
15
16#ifndef LLVM_C_LTO_H
17#define LLVM_C_LTO_H
18
19#include "llvm-c/ExternC.h"
20
21#ifdef __cplusplus
22#include <cstddef>
23#else
24#include <stddef.h>
25#endif
26#include <sys/types.h>
27
28#ifndef __cplusplus
29#if !defined(_MSC_VER)
30#include <stdbool.h>
31typedef bool lto_bool_t;
32#else
33/* MSVC in particular does not have anything like _Bool or bool in C, but we can
34 at least make sure the type is the same size. The implementation side will
35 use C++ bool. */
36typedef unsigned char lto_bool_t;
37#endif
38#else
39typedef bool lto_bool_t;
40#endif
41
49#define LTO_API_VERSION 29
50
54typedef enum {
55 LTO_SYMBOL_ALIGNMENT_MASK = 0x0000001F, /* log2 of alignment */
72 LTO_SYMBOL_COMDAT = 0x00004000,
73 LTO_SYMBOL_ALIAS = 0x00008000
75
79typedef enum {
83
87typedef enum {
93
95typedef struct LLVMOpaqueLTOModule *lto_module_t;
96
98typedef struct LLVMOpaqueLTOCodeGenerator *lto_code_gen_t;
99
101typedef struct LLVMOpaqueThinLTOCodeGenerator *thinlto_code_gen_t;
102
104
110extern const char*
112
118extern const char*
120
126extern lto_bool_t
128
134extern lto_bool_t
136 const char* target_triple_prefix);
137
144extern lto_bool_t
145lto_module_has_objc_category(const void *mem, size_t length);
146
153 size_t length);
154
160extern lto_bool_t
162 const char* target_triple_prefix);
163
170extern lto_module_t
171lto_module_create(const char* path);
172
179extern lto_module_t
180lto_module_create_from_memory(const void* mem, size_t length);
181
188extern lto_module_t
189lto_module_create_from_memory_with_path(const void* mem, size_t length,
190 const char *path);
191
203extern lto_module_t
204lto_module_create_in_local_context(const void *mem, size_t length,
205 const char *path);
206
217extern lto_module_t
218lto_module_create_in_codegen_context(const void *mem, size_t length,
219 const char *path, lto_code_gen_t cg);
220
227extern lto_module_t
228lto_module_create_from_fd(int fd, const char *path, size_t file_size);
229
236extern lto_module_t
237lto_module_create_from_fd_at_offset(int fd, const char *path, size_t file_size,
238 size_t map_size, off_t offset);
239
246extern void
248
254extern const char*
256
262extern void
264
270extern unsigned int
272
278extern const char*
280
288
297extern const char*
299
312 unsigned int *out_cputype,
313 unsigned int *out_cpusubtype);
314
330typedef enum {
333 LTO_DS_REMARK = 3, // Added in LTO_API_VERSION=10.
334 LTO_DS_NOTE = 2
336
347 lto_codegen_diagnostic_severity_t severity, const char *diag, void *ctxt);
348
358 void *);
359
369extern lto_code_gen_t
371
381extern lto_code_gen_t
383
390extern void
392
403extern lto_bool_t
405
414extern void
416
423extern lto_bool_t
425
432extern lto_bool_t
434
440extern void
442
449extern void
451
457extern void
459 int nargs);
460
468extern void
470
478extern lto_bool_t
480
493extern const void*
495
505extern lto_bool_t
507
513extern lto_bool_t
515
528extern const void*
530
536extern unsigned int
538
551extern void lto_set_debug_options(const char *const *options, int number);
552
564extern void
566
574 const char *const *, int number);
575
582extern void
584
591extern void
593 lto_bool_t ShouldInternalize);
594
603extern void
605 lto_bool_t ShouldEmbedUselists);
606
608typedef struct LLVMOpaqueLTOInput *lto_input_t;
609
618extern lto_input_t lto_input_create(const void *buffer,
619 size_t buffer_size,
620 const char *path);
621
629
637
646 size_t index,
647 size_t *size);
648
655extern const char *const *lto_runtime_lib_symbols_list(size_t *size);
656
670typedef struct {
671 const char *Buffer;
672 size_t Size;
674
688
696
709 const char *identifier, const char *data,
710 int length);
711
719
730
741 unsigned int index);
742
753
764 unsigned int index);
765
774
783 const char *save_temps_dir);
784
794 const char *save_temps_dir);
795
801extern void thinlto_codegen_set_cpu(thinlto_code_gen_t cg, const char *cpu);
802
810 lto_bool_t disable);
811
818 lto_bool_t codegen_only);
819
825extern void thinlto_debug_options(const char *const *options, int number);
826
833
843 const char *name,
844 int length);
845
855 const char *name,
856 int length);
857
886 const char *cache_dir);
887
896 int interval);
897
912 thinlto_code_gen_t cg, unsigned percentage);
913
921 unsigned expiration);
922
932 unsigned max_size_bytes);
933
940extern void
942 unsigned max_size_megabytes);
943
951 unsigned max_size_files);
952
958
959#endif /* LLVM_C_LTO_H */
#define LLVM_C_EXTERN_C_BEGIN
Definition: ExternC.h:35
#define LLVM_C_EXTERN_C_END
Definition: ExternC.h:36
void lto_input_dispose(lto_input_t input)
lto_module_t lto_module_create_in_codegen_context(const void *mem, size_t length, const char *path, lto_code_gen_t cg)
void lto_codegen_debug_options(lto_code_gen_t cg, const char *)
lto_code_gen_t lto_codegen_create_in_local_context(void)
lto_bool_t lto_module_get_macho_cputype(lto_module_t mod, unsigned int *out_cputype, unsigned int *out_cpusubtype)
lto_module_t lto_module_create_in_local_context(const void *mem, size_t length, const char *path)
void lto_set_debug_options(const char *const *options, int number)
void lto_codegen_set_should_embed_uselists(lto_code_gen_t cg, lto_bool_t ShouldEmbedUselists)
const void * lto_codegen_compile(lto_code_gen_t cg, size_t *length)
const char *const * lto_runtime_lib_symbols_list(size_t *size)
void lto_codegen_dispose(lto_code_gen_t)
unsigned lto_input_get_num_dependent_libraries(lto_input_t input)
void lto_codegen_set_assembler_args(lto_code_gen_t cg, const char **args, int nargs)
lto_module_t lto_module_create(const char *path)
lto_code_gen_t lto_codegen_create(void)
const char * lto_module_get_target_triple(lto_module_t mod)
void lto_module_set_target_triple(lto_module_t mod, const char *triple)
struct LLVMOpaqueLTOModule * lto_module_t
Definition: lto.h:95
lto_bool_t lto_codegen_write_merged_modules(lto_code_gen_t cg, const char *path)
lto_debug_model
Definition: lto.h:79
lto_module_t lto_module_create_from_fd(int fd, const char *path, size_t file_size)
unsigned int lto_module_get_num_symbols(lto_module_t mod)
lto_bool_t lto_module_has_ctor_dtor(lto_module_t mod)
const char * lto_module_get_linkeropts(lto_module_t mod)
lto_module_t lto_module_create_from_memory(const void *mem, size_t length)
struct LLVMOpaqueLTOCodeGenerator * lto_code_gen_t
Definition: lto.h:98
lto_bool_t lto_codegen_set_pic_model(lto_code_gen_t cg, lto_codegen_model)
void lto_codegen_set_should_internalize(lto_code_gen_t cg, lto_bool_t ShouldInternalize)
lto_codegen_diagnostic_severity_t
Definition: lto.h:330
lto_bool_t lto_module_has_objc_category(const void *mem, size_t length)
unsigned int lto_api_version(void)
lto_symbol_attributes
Definition: lto.h:54
lto_symbol_attributes lto_module_get_symbol_attribute(lto_module_t mod, unsigned int index)
void lto_codegen_set_module(lto_code_gen_t cg, lto_module_t mod)
const char * lto_module_get_symbol_name(lto_module_t mod, unsigned int index)
lto_module_t lto_module_create_from_memory_with_path(const void *mem, size_t length, const char *path)
void lto_codegen_set_diagnostic_handler(lto_code_gen_t, lto_diagnostic_handler_t, void *)
lto_bool_t lto_module_is_object_file_in_memory_for_target(const void *mem, size_t length, const char *target_triple_prefix)
struct LLVMOpaqueLTOInput * lto_input_t
Definition: lto.h:608
struct LLVMOpaqueThinLTOCodeGenerator * thinlto_code_gen_t
Definition: lto.h:101
lto_bool_t lto_codegen_optimize(lto_code_gen_t cg)
lto_bool_t lto_module_is_object_file_for_target(const char *path, const char *target_triple_prefix)
LLVM_C_EXTERN_C_BEGIN const char * lto_get_version(void)
void lto_initialize_disassembler(void)
void lto_codegen_add_must_preserve_symbol(lto_code_gen_t cg, const char *symbol)
lto_bool_t lto_module_is_object_file_in_memory(const void *mem, size_t length)
lto_bool_t lto_codegen_add_module(lto_code_gen_t cg, lto_module_t mod)
void(* lto_diagnostic_handler_t)(lto_codegen_diagnostic_severity_t severity, const char *diag, void *ctxt)
Definition: lto.h:346
const void * lto_codegen_compile_optimized(lto_code_gen_t cg, size_t *length)
lto_codegen_model
Definition: lto.h:87
lto_input_t lto_input_create(const void *buffer, size_t buffer_size, const char *path)
lto_bool_t lto_codegen_set_debug_model(lto_code_gen_t cg, lto_debug_model)
lto_bool_t lto_codegen_compile_to_file(lto_code_gen_t cg, const char **name)
lto_bool_t lto_module_is_object_file(const char *path)
const char * lto_get_error_message(void)
void lto_codegen_set_cpu(lto_code_gen_t cg, const char *cpu)
lto_module_t lto_module_create_from_fd_at_offset(int fd, const char *path, size_t file_size, size_t map_size, off_t offset)
const char * lto_input_get_dependent_library(lto_input_t input, size_t index, size_t *size)
void lto_codegen_debug_options_array(lto_code_gen_t cg, const char *const *, int number)
void lto_module_dispose(lto_module_t mod)
void lto_codegen_set_assembler_path(lto_code_gen_t cg, const char *path)
@ LTO_DEBUG_MODEL_DWARF
Definition: lto.h:81
@ LTO_DEBUG_MODEL_NONE
Definition: lto.h:80
@ LTO_DS_REMARK
Definition: lto.h:333
@ LTO_DS_WARNING
Definition: lto.h:332
@ LTO_DS_NOTE
Definition: lto.h:334
@ LTO_DS_ERROR
Definition: lto.h:331
@ LTO_SYMBOL_SCOPE_DEFAULT_CAN_BE_HIDDEN
Definition: lto.h:71
@ LTO_SYMBOL_PERMISSIONS_CODE
Definition: lto.h:57
@ LTO_SYMBOL_DEFINITION_REGULAR
Definition: lto.h:61
@ LTO_SYMBOL_SCOPE_DEFAULT
Definition: lto.h:70
@ LTO_SYMBOL_SCOPE_INTERNAL
Definition: lto.h:67
@ LTO_SYMBOL_ALIAS
Definition: lto.h:73
@ LTO_SYMBOL_ALIGNMENT_MASK
Definition: lto.h:55
@ LTO_SYMBOL_SCOPE_HIDDEN
Definition: lto.h:68
@ LTO_SYMBOL_DEFINITION_TENTATIVE
Definition: lto.h:62
@ LTO_SYMBOL_PERMISSIONS_DATA
Definition: lto.h:58
@ LTO_SYMBOL_SCOPE_PROTECTED
Definition: lto.h:69
@ LTO_SYMBOL_PERMISSIONS_RODATA
Definition: lto.h:59
@ LTO_SYMBOL_SCOPE_MASK
Definition: lto.h:66
@ LTO_SYMBOL_COMDAT
Definition: lto.h:72
@ LTO_SYMBOL_DEFINITION_WEAKUNDEF
Definition: lto.h:65
@ LTO_SYMBOL_DEFINITION_UNDEFINED
Definition: lto.h:64
@ LTO_SYMBOL_DEFINITION_WEAK
Definition: lto.h:63
@ LTO_SYMBOL_PERMISSIONS_MASK
Definition: lto.h:56
@ LTO_SYMBOL_DEFINITION_MASK
Definition: lto.h:60
@ LTO_CODEGEN_PIC_MODEL_DYNAMIC_NO_PIC
Definition: lto.h:90
@ LTO_CODEGEN_PIC_MODEL_DYNAMIC
Definition: lto.h:89
@ LTO_CODEGEN_PIC_MODEL_DEFAULT
Definition: lto.h:91
@ LTO_CODEGEN_PIC_MODEL_STATIC
Definition: lto.h:88
void thinlto_codegen_set_cache_size_megabytes(thinlto_code_gen_t cg, unsigned max_size_megabytes)
void thinlto_codegen_set_final_cache_size_relative_to_available_space(thinlto_code_gen_t cg, unsigned percentage)
void thinlto_codegen_set_cache_size_files(thinlto_code_gen_t cg, unsigned max_size_files)
void thinlto_codegen_set_cache_dir(thinlto_code_gen_t cg, const char *cache_dir)
void thinlto_codegen_set_cache_size_bytes(thinlto_code_gen_t cg, unsigned max_size_bytes)
void thinlto_codegen_set_cache_pruning_interval(thinlto_code_gen_t cg, int interval)
void thinlto_codegen_set_cache_entry_expiration(thinlto_code_gen_t cg, unsigned expiration)
void thinlto_codegen_add_cross_referenced_symbol(thinlto_code_gen_t cg, const char *name, int length)
lto_bool_t thinlto_codegen_set_pic_model(thinlto_code_gen_t cg, lto_codegen_model)
void thinlto_codegen_disable_codegen(thinlto_code_gen_t cg, lto_bool_t disable)
void thinlto_debug_options(const char *const *options, int number)
void thinlto_codegen_set_savetemps_dir(thinlto_code_gen_t cg, const char *save_temps_dir)
unsigned int thinlto_module_get_num_objects(thinlto_code_gen_t cg)
LTOObjectBuffer thinlto_module_get_object(thinlto_code_gen_t cg, unsigned int index)
const char * thinlto_module_get_object_file(thinlto_code_gen_t cg, unsigned int index)
void thinlto_set_generated_objects_dir(thinlto_code_gen_t cg, const char *save_temps_dir)
void thinlto_codegen_set_cpu(thinlto_code_gen_t cg, const char *cpu)
thinlto_code_gen_t thinlto_create_codegen(void)
void thinlto_codegen_add_module(thinlto_code_gen_t cg, const char *identifier, const char *data, int length)
void thinlto_codegen_add_must_preserve_symbol(thinlto_code_gen_t cg, const char *name, int length)
unsigned int thinlto_module_get_num_object_files(thinlto_code_gen_t cg)
lto_bool_t lto_module_is_thinlto(lto_module_t mod)
void thinlto_codegen_process(thinlto_code_gen_t cg)
void thinlto_codegen_set_codegen_only(thinlto_code_gen_t cg, lto_bool_t codegen_only)
void thinlto_codegen_dispose(thinlto_code_gen_t cg)
bool lto_bool_t
Definition: lto.h:31
const char * Buffer
Definition: lto.h:671
size_t Size
Definition: lto.h:672