LLVM: ThinLTO (original) (raw)
// endgoup LLVMCLTO More...
| Functions | |
|---|---|
| thinlto_code_gen_t | thinlto_create_codegen (void) |
| Instantiates a ThinLTO code generator. | |
| void | thinlto_codegen_dispose (thinlto_code_gen_t cg) |
| Frees the generator and all memory it internally allocated. | |
| 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. | |
| void | thinlto_codegen_process (thinlto_code_gen_t cg) |
| Optimize and codegen all the modules added to the codegenerator using ThinLTO. | |
| unsigned int | thinlto_module_get_num_objects (thinlto_code_gen_t cg) |
| Returns the number of object files produced by the ThinLTO CodeGenerator. | |
| 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. | |
| unsigned int | thinlto_module_get_num_object_files (thinlto_code_gen_t cg) |
| Returns the number of object files produced by the ThinLTO CodeGenerator. | |
| 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. | |
| lto_bool_t | thinlto_codegen_set_pic_model (thinlto_code_gen_t cg, lto_codegen_model) |
| Sets which PIC code model to generate. | |
| 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. | |
| 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. | |
| void | thinlto_codegen_set_cpu (thinlto_code_gen_t cg, const char *cpu) |
| Sets the cpu to generate code for. | |
| void | thinlto_codegen_disable_codegen (thinlto_code_gen_t cg, lto_bool_t disable) |
| Disable CodeGen, only run the stages till codegen and stop. | |
| 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_debug_options (const char *const *options, int number) |
| Parse -mllvm style debug options. | |
| lto_bool_t | lto_module_is_thinlto (lto_module_t mod) |
| Test if a module has support for ThinLTO linking. | |
| 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. | |
| 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. |
// endgoup LLVMCLTO
◆ lto_module_is_thinlto()
Test if a module has support for ThinLTO linking.
Since
LTO_API_VERSION=18
◆ thinlto_codegen_add_cross_referenced_symbol()
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.
Since
LTO_API_VERSION=18
References name.
◆ thinlto_codegen_add_module()
Add a module to a ThinLTO code generator.
Identifier has to be unique among all the modules in a code generator. The data buffer stays owned by the client, and is expected to be available for the entire lifetime of the thinlto_code_gen_t it is added to.
On failure, returns NULL (check lto_get_error_message() for details).
Since
LTO_API_VERSION=18
References data.
◆ thinlto_codegen_add_must_preserve_symbol()
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.
Since
LTO_API_VERSION=18
References name.
◆ thinlto_codegen_disable_codegen()
Disable CodeGen, only run the stages till codegen and stop.
The output will be bitcode.
Since
LTO_API_VERSION=19
◆ thinlto_codegen_dispose()
Frees the generator and all memory it internally allocated.
Upon return the thinlto_code_gen_t is no longer valid.
Since
LTO_API_VERSION=18
◆ thinlto_codegen_process()
Optimize and codegen all the modules added to the codegenerator using ThinLTO.
Resulting objects are accessible using thinlto_module_get_object().
Since
LTO_API_VERSION=18
◆ thinlto_codegen_set_codegen_only()
Perform CodeGen only: disable all other stages.
Since
LTO_API_VERSION=19
◆ thinlto_codegen_set_cpu()
Sets the cpu to generate code for.
Since
LTO_API_VERSION=18
◆ thinlto_codegen_set_pic_model()
Sets which PIC code model to generate.
Returns true on error (check lto_get_error_message() for details).
Since
LTO_API_VERSION=18
◆ thinlto_codegen_set_savetemps_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.
Since
LTO_API_VERSION=18
◆ thinlto_create_codegen()
Instantiates a ThinLTO code generator.
Returns NULL on error (check lto_get_error_message() for details).
The ThinLTOCodeGenerator is not intended to be reuse for multiple compilation: the model is that the client adds modules to the generator and ask to perform the ThinLTO optimizations / codegen, and finally destroys the codegenerator.
Since
LTO_API_VERSION=18
◆ thinlto_debug_options()
| void thinlto_debug_options ( const char *const * options, int number ) | extern |
|---|
Parse -mllvm style debug options.
Since
LTO_API_VERSION=18
References number().
◆ thinlto_module_get_num_object_files()
Returns the number of object files produced by the ThinLTO CodeGenerator.
It usually matches the number of input files, but this is not a guarantee of the API and may change in future implementation, so the client should not assume it.
Since
LTO_API_VERSION=21
◆ thinlto_module_get_num_objects()
Returns the number of object files produced by the ThinLTO CodeGenerator.
It usually matches the number of input files, but this is not a guarantee of the API and may change in future implementation, so the client should not assume it.
Since
LTO_API_VERSION=18
◆ thinlto_module_get_object()
Returns a reference to the ith object file produced by the ThinLTO CodeGenerator.
Client should use [thinlto_module_get_num_objects()](#ga4b0d79fbe2182463fd0a8549669f661d "Returns the number of object files produced by the ThinLTO CodeGenerator.") to get the number of available objects.
Since
LTO_API_VERSION=18
◆ thinlto_module_get_object_file()
Returns the path to the ith object file produced by the ThinLTO CodeGenerator.
Client should use [thinlto_module_get_num_object_files()](#gab2701c474a2e855b522647d4403bc735 "Returns the number of object files produced by the ThinLTO CodeGenerator.") to get the number of available objects.
Since
LTO_API_VERSION=21
◆ thinlto_set_generated_objects_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().
Since
LTO_API_VERSION=21