|
LLVM
4.0.0
|
#include <stddef.h>#include <sys/types.h>#include <stdbool.h>Go to the source code of this file.
Classes | |
| struct | LTOObjectBuffer |
| Type to wrap a single object returned by ThinLTO. More... | |
Macros | |
| #define | LTO_API_VERSION 21 |
Typedefs | |
| typedef bool | lto_bool_t |
| typedef struct LLVMOpaqueLTOModule * | lto_module_t |
| opaque reference to a loaded object module More... | |
| typedef struct LLVMOpaqueLTOCodeGenerator * | lto_code_gen_t |
| opaque reference to a code generator More... | |
| typedef struct LLVMOpaqueThinLTOCodeGenerator * | thinlto_code_gen_t |
| opaque reference to a thin code generator More... | |
| typedef void(* | lto_diagnostic_handler_t )(lto_codegen_diagnostic_severity_t severity, const char *diag, void *ctxt) |
| Diagnostic handler type. More... | |
Functions | |
| const char * | lto_get_version (void) |
| Returns a printable string. More... | |
| const char * | lto_get_error_message (void) |
| Returns the last error string or NULL if last operation was successful. More... | |
| lto_bool_t | lto_module_is_object_file (const char *path) |
| Checks if a file is a loadable object file. More... | |
| lto_bool_t | lto_module_is_object_file_for_target (const char *path, const char *target_triple_prefix) |
| Checks if a file is a loadable object compiled for requested target. More... | |
| lto_bool_t | lto_module_has_objc_category (const void *mem, size_t length) |
Return true if Buffer contains a bitcode file with ObjC code (category or class) in it. More... | |
| lto_bool_t | lto_module_is_object_file_in_memory (const void *mem, size_t length) |
| Checks if a buffer is a loadable object file. More... | |
| lto_bool_t | lto_module_is_object_file_in_memory_for_target (const void *mem, size_t length, const char *target_triple_prefix) |
| Checks if a buffer is a loadable object compiled for requested target. More... | |
| lto_module_t | lto_module_create (const char *path) |
| Loads an object file from disk. More... | |
| lto_module_t | lto_module_create_from_memory (const void *mem, size_t length) |
| Loads an object file from memory. More... | |
| lto_module_t | lto_module_create_from_memory_with_path (const void *mem, size_t length, const char *path) |
| Loads an object file from memory with an extra path argument. More... | |
| lto_module_t | lto_module_create_in_local_context (const void *mem, size_t length, const char *path) |
| Loads an object file in its own context. More... | |
| lto_module_t | lto_module_create_in_codegen_context (const void *mem, size_t length, const char *path, lto_code_gen_t cg) |
| Loads an object file in the codegen context. More... | |
| lto_module_t | lto_module_create_from_fd (int fd, const char *path, size_t file_size) |
| Loads an object file from disk. More... | |
| 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) |
| Loads an object file from disk. More... | |
| void | lto_module_dispose (lto_module_t mod) |
| Frees all memory internally allocated by the module. More... | |
| const char * | lto_module_get_target_triple (lto_module_t mod) |
| Returns triple string which the object module was compiled under. More... | |
| void | lto_module_set_target_triple (lto_module_t mod, const char *triple) |
| Sets triple string with which the object will be codegened. More... | |
| unsigned int | lto_module_get_num_symbols (lto_module_t mod) |
| Returns the number of symbols in the object module. More... | |
| const char * | lto_module_get_symbol_name (lto_module_t mod, unsigned int index) |
| Returns the name of the ith symbol in the object module. More... | |
| lto_symbol_attributes | lto_module_get_symbol_attribute (lto_module_t mod, unsigned int index) |
| Returns the attributes of the ith symbol in the object module. More... | |
| const char * | lto_module_get_linkeropts (lto_module_t mod) |
| Returns the module's linker options. More... | |
| void | lto_codegen_set_diagnostic_handler (lto_code_gen_t, lto_diagnostic_handler_t, void *) |
| Set a diagnostic handler and the related context (void *). More... | |
| lto_code_gen_t | lto_codegen_create (void) |
| Instantiates a code generator. More... | |
| lto_code_gen_t | lto_codegen_create_in_local_context (void) |
| Instantiate a code generator in its own context. More... | |
| void | lto_codegen_dispose (lto_code_gen_t) |
| Frees all code generator and all memory it internally allocated. More... | |
| lto_bool_t | lto_codegen_add_module (lto_code_gen_t cg, lto_module_t mod) |
| Add an object module to the set of modules for which code will be generated. More... | |
| void | lto_codegen_set_module (lto_code_gen_t cg, lto_module_t mod) |
| Sets the object module for code generation. More... | |
| lto_bool_t | lto_codegen_set_debug_model (lto_code_gen_t cg, lto_debug_model) |
| Sets if debug info should be generated. More... | |
| lto_bool_t | lto_codegen_set_pic_model (lto_code_gen_t cg, lto_codegen_model) |
| Sets which PIC code model to generated. More... | |
| void | lto_codegen_set_cpu (lto_code_gen_t cg, const char *cpu) |
| Sets the cpu to generate code for. More... | |
| void | lto_codegen_set_assembler_path (lto_code_gen_t cg, const char *path) |
| Sets the location of the assembler tool to run. More... | |
| void | lto_codegen_set_assembler_args (lto_code_gen_t cg, const char **args, int nargs) |
| Sets extra arguments that libLTO should pass to the assembler. More... | |
| void | lto_codegen_add_must_preserve_symbol (lto_code_gen_t cg, const char *symbol) |
| Adds to a list of all global symbols that must exist in the final generated code. More... | |
| lto_bool_t | lto_codegen_write_merged_modules (lto_code_gen_t cg, const char *path) |
| Writes a new object file at the specified path that contains the merged contents of all modules added so far. More... | |
| const void * | lto_codegen_compile (lto_code_gen_t cg, size_t *length) |
| Generates code for all added modules into one native object file. More... | |
| lto_bool_t | lto_codegen_compile_to_file (lto_code_gen_t cg, const char **name) |
| Generates code for all added modules into one native object file. More... | |
| lto_bool_t | lto_codegen_optimize (lto_code_gen_t cg) |
| Runs optimization for the merged module. More... | |
| const void * | lto_codegen_compile_optimized (lto_code_gen_t cg, size_t *length) |
| Generates code for the optimized merged module into one native object file. More... | |
| unsigned int | lto_api_version (void) |
| Returns the runtime API version. More... | |
| void | lto_codegen_debug_options (lto_code_gen_t cg, const char *) |
| Sets options to help debug codegen bugs. More... | |
| void | lto_initialize_disassembler (void) |
| Initializes LLVM disassemblers. More... | |
| void | lto_codegen_set_should_internalize (lto_code_gen_t cg, lto_bool_t ShouldInternalize) |
| Sets if we should run internalize pass during optimization and code generation. More... | |
| void | lto_codegen_set_should_embed_uselists (lto_code_gen_t cg, lto_bool_t ShouldEmbedUselists) |
| Set whether to embed uselists in bitcode. More... | |
| thinlto_code_gen_t | thinlto_create_codegen (void) |
| Instantiates a ThinLTO code generator. More... | |
| void | thinlto_codegen_dispose (thinlto_code_gen_t cg) |
| Frees the generator and all memory it internally allocated. More... | |
| void | thinlto_codegen_add_module (thinlto_code_gen_t cg, const char *identifier, const char *data, int length) |
| Add a module to a ThinLTO code generator. More... | |
| void | thinlto_codegen_process (thinlto_code_gen_t cg) |
| Optimize and codegen all the modules added to the codegenerator using ThinLTO. More... | |
| unsigned int | thinlto_module_get_num_objects (thinlto_code_gen_t cg) |
| Returns the number of object files produced by the ThinLTO CodeGenerator. More... | |
| LTOObjectBuffer | thinlto_module_get_object (thinlto_code_gen_t cg, unsigned int index) |
| Returns a reference to the ith object file produced by the ThinLTO CodeGenerator. More... | |
| unsigned int | thinlto_module_get_num_object_files (thinlto_code_gen_t cg) |
| Returns the number of object files produced by the ThinLTO CodeGenerator. More... | |
| const char * | thinlto_module_get_object_file (thinlto_code_gen_t cg, unsigned int index) |
| Returns the path to the ith object file produced by the ThinLTO CodeGenerator. More... | |
| lto_bool_t | thinlto_codegen_set_pic_model (thinlto_code_gen_t cg, lto_codegen_model) |
| Sets which PIC code model to generate. More... | |
| void | thinlto_codegen_set_cache_dir (thinlto_code_gen_t cg, const char *cache_dir) |
| Sets the path to a directory to use as a cache storage for incremental build. More... | |
| void | thinlto_codegen_set_cache_pruning_interval (thinlto_code_gen_t cg, int interval) |
| Sets the cache pruning interval (in seconds). More... | |
| void | thinlto_codegen_set_final_cache_size_relative_to_available_space (thinlto_code_gen_t cg, unsigned percentage) |
| Sets the maximum cache size that can be persistent across build, in terms of percentage of the available space on the the disk. More... | |
| void | thinlto_codegen_set_cache_entry_expiration (thinlto_code_gen_t cg, unsigned expiration) |
| Sets the expiration (in seconds) for an entry in the cache. More... | |
| void | thinlto_codegen_set_savetemps_dir (thinlto_code_gen_t cg, const char *save_temps_dir) |
| Sets the path to a directory to use as a storage for temporary bitcode files. More... | |
| void | thinlto_set_generated_objects_dir (thinlto_code_gen_t cg, const char *save_temps_dir) |
| Set the path to a directory where to save generated object files. More... | |
| void | thinlto_codegen_set_cpu (thinlto_code_gen_t cg, const char *cpu) |
| Sets the cpu to generate code for. More... | |
| void | thinlto_codegen_disable_codegen (thinlto_code_gen_t cg, lto_bool_t disable) |
| Disable CodeGen, only run the stages till codegen and stop. More... | |
| void | thinlto_codegen_set_codegen_only (thinlto_code_gen_t cg, lto_bool_t codegen_only) |
| Perform CodeGen only: disable all other stages. More... | |
| void | thinlto_debug_options (const char *const *options, int number) |
| Parse -mllvm style debug options. More... | |
| lto_bool_t | lto_module_is_thinlto (lto_module_t mod) |
| Test if a module has support for ThinLTO linking. More... | |
| void | thinlto_codegen_add_must_preserve_symbol (thinlto_code_gen_t cg, const char *name, int length) |
| Adds a symbol to the list of global symbols that must exist in the final generated code. More... | |
| void | thinlto_codegen_add_cross_referenced_symbol (thinlto_code_gen_t cg, const char *name, int length) |
| Adds a symbol to the list of global symbols that are cross-referenced between ThinLTO files. More... | |
| typedef bool lto_bool_t |
| lto_bool_t lto_module_is_thinlto | ( | lto_module_t | mod | ) |
Test if a module has support for ThinLTO linking.
| void thinlto_codegen_add_cross_referenced_symbol | ( | thinlto_code_gen_t | cg, |
| const char * | name, | ||
| int | length | ||
| ) |
Adds a symbol to the list of global symbols that are cross-referenced between ThinLTO files.
If the ThinLTO CodeGenerator can ensure that every references from a ThinLTO module to this symbol is optimized away, then the symbol can be discarded.
| void thinlto_codegen_add_must_preserve_symbol | ( | thinlto_code_gen_t | cg, |
| const char * | name, | ||
| int | length | ||
| ) |
Adds a symbol to the list of global symbols that must exist in the final generated code.
If a function is not listed there, it might be inlined into every usage and optimized away. For every single module, the functions referenced from code outside of the ThinLTO modules need to be added here.
| void thinlto_codegen_disable_codegen | ( | thinlto_code_gen_t | cg, |
| lto_bool_t | disable | ||
| ) |
Disable CodeGen, only run the stages till codegen and stop.
The output will be bitcode.
| void thinlto_codegen_set_codegen_only | ( | thinlto_code_gen_t | cg, |
| lto_bool_t | codegen_only | ||
| ) |
Perform CodeGen only: disable all other stages.
| void thinlto_codegen_set_cpu | ( | thinlto_code_gen_t | cg, |
| const char * | cpu | ||
| ) |
Sets the cpu to generate code for.
| void thinlto_codegen_set_savetemps_dir | ( | thinlto_code_gen_t | cg, |
| const char * | save_temps_dir | ||
| ) |
Sets the path to a directory to use as a storage for temporary bitcode files.
The intention is to make the bitcode files available for debugging at various stage of the pipeline.
Parse -mllvm style debug options.
| void thinlto_set_generated_objects_dir | ( | thinlto_code_gen_t | cg, |
| const char * | save_temps_dir | ||
| ) |
Set the path to a directory where to save generated object files.
This path can be used by a linker to request on-disk files instead of in-memory buffers. When set, results are available through thinlto_module_get_object_file() instead of thinlto_module_get_object().
1.8.6