f785676f2a
all of the features in the current working draft of the upcoming C++ standard, provisionally named C++1y. The code generator's performance is greatly increased, and the loop auto-vectorizer is now enabled at -Os and -O2 in addition to -O3. The PowerPC backend has made several major improvements to code generation quality and compile time, and the X86, SPARC, ARM32, Aarch64 and SystemZ backends have all seen major feature work. Release notes for llvm and clang can be found here: <http://llvm.org/releases/3.4/docs/ReleaseNotes.html> <http://llvm.org/releases/3.4/tools/clang/docs/ReleaseNotes.html> MFC after: 1 month
70 lines
2.0 KiB
C++
70 lines
2.0 KiB
C++
//===-- llvm/LinkTimeOptimizer.h - LTO Public C Interface -------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This header provides a C API to use the LLVM link time optimization
|
|
// library. This is intended to be used by linkers which are C-only in
|
|
// their implementation for performing LTO.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_C_LINKTIMEOPTIMIZER_H
|
|
#define LLVM_C_LINKTIMEOPTIMIZER_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @defgroup LLVMCLinkTimeOptimizer Link Time Optimization
|
|
* @ingroup LLVMC
|
|
*
|
|
* @{
|
|
*/
|
|
|
|
/// This provides a dummy type for pointers to the LTO object.
|
|
typedef void* llvm_lto_t;
|
|
|
|
/// This provides a C-visible enumerator to manage status codes.
|
|
/// This should map exactly onto the C++ enumerator LTOStatus.
|
|
typedef enum llvm_lto_status {
|
|
LLVM_LTO_UNKNOWN,
|
|
LLVM_LTO_OPT_SUCCESS,
|
|
LLVM_LTO_READ_SUCCESS,
|
|
LLVM_LTO_READ_FAILURE,
|
|
LLVM_LTO_WRITE_FAILURE,
|
|
LLVM_LTO_NO_TARGET,
|
|
LLVM_LTO_NO_WORK,
|
|
LLVM_LTO_MODULE_MERGE_FAILURE,
|
|
LLVM_LTO_ASM_FAILURE,
|
|
|
|
// Added C-specific error codes
|
|
LLVM_LTO_NULL_OBJECT
|
|
} llvm_lto_status_t;
|
|
|
|
/// This provides C interface to initialize link time optimizer. This allows
|
|
/// linker to use dlopen() interface to dynamically load LinkTimeOptimizer.
|
|
/// extern "C" helps, because dlopen() interface uses name to find the symbol.
|
|
extern llvm_lto_t llvm_create_optimizer(void);
|
|
extern void llvm_destroy_optimizer(llvm_lto_t lto);
|
|
|
|
extern llvm_lto_status_t llvm_read_object_file
|
|
(llvm_lto_t lto, const char* input_filename);
|
|
extern llvm_lto_status_t llvm_optimize_modules
|
|
(llvm_lto_t lto, const char* output_filename);
|
|
|
|
/**
|
|
* @}
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|