[llvm-commits] CVS: llvm/tools/lto/lto-c.cpp

Chris Lattner sabre at nondot.org
Sat Jan 6 15:53:58 PST 2007



Changes in directory llvm/tools/lto:

lto-c.cpp added (r1.1)
---
Log message:

Add C wrappers for the LTO library (PR1081: http://llvm.org/PR1081 ).  Patch by Chandler Carruth!


---
Diffs of the changes:  (+66 -0)

 lto-c.cpp |   66 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 66 insertions(+)


Index: llvm/tools/lto/lto-c.cpp
diff -c /dev/null llvm/tools/lto/lto-c.cpp:1.1
*** /dev/null	Sat Jan  6 17:53:53 2007
--- llvm/tools/lto/lto-c.cpp	Sat Jan  6 17:53:43 2007
***************
*** 0 ****
--- 1,66 ----
+ //===- lto-c.cpp - LLVM Link Time Optimizer C Wrappers --------------------===//
+ //
+ //                     The LLVM Compiler Infrastructure
+ //
+ // This file was developed by Chandler Carruth and is distributed under
+ // the University of Illinois Open Source License. See LICENSE.TXT for details.
+ // 
+ //===----------------------------------------------------------------------===//
+ //
+ // This file implements a C wrapper API for the Link Time Optimization
+ // library.
+ //
+ //===----------------------------------------------------------------------===//
+ 
+ #include "llvm-c/LinkTimeOptimizer.h"
+ #include "llvm/LinkTimeOptimizer.h"
+ using namespace llvm;
+ 
+ 
+ /// Create an instance of the LLVM LTO object for performing the link
+ /// time optimizations.
+ extern "C"
+ llvm_lto_t llvm_create_optimizer() {
+   return new llvm::LTO();
+ }
+ 
+ /// Destroy an instance of the LLVM LTO object
+ extern "C"
+ void llvm_destroy_optimizer(llvm_lto_t lto) {
+   delete (llvm::LTO*)lto;
+ }
+ 
+ /// Read an LLVM bytecode file using LTO::readLLVMObjectFile.
+ extern "C"
+ llvm_lto_status
+ llvm_read_object_file(llvm_lto_t lto, const char *input_filename) {
+   llvm::LTO *l = (llvm::LTO*)lto;
+ 
+   if (input_filename == NULL)
+     return LLVM_LTO_READ_FAILURE;
+ 
+   std::string InputFilename(input_filename);
+   llvm::LTO::NameToSymbolMap symbols;
+   std::set<std::string> references;
+   return (llvm_lto_status)((int)(l->readLLVMObjectFile(InputFilename, symbols,
+                                                        references)));
+ }
+ 
+ 
+ /// Optimize and output object code using LTO::optimizeModules.
+ extern "C"
+ llvm_lto_status
+ llvm_optimize_modules(llvm_lto_t lto, const char *output_filename) {
+   llvm::LTO *l = (llvm::LTO*)lto;
+ 
+   std::string OutputFilename(output_filename);
+   std::vector<const char *> exportList;
+   std::string targetTriple;
+ 
+   return (llvm_lto_status)((int)(
+     l->optimizeModules(OutputFilename, exportList,
+                        targetTriple, false, "")));
+ }
+ 
+ 
+ 






More information about the llvm-commits mailing list