[llvm-commits] [llvm] r52910 - /llvm/trunk/include/llvm/LinkTimeOptimizer.h
Devang Patel
dpatel at apple.com
Mon Jun 30 11:05:29 PDT 2008
Author: dpatel
Date: Mon Jun 30 13:05:29 2008
New Revision: 52910
URL: http://llvm.org/viewvc/llvm-project?rev=52910&view=rev
Log:
Remove old LTO interface.
Removed:
llvm/trunk/include/llvm/LinkTimeOptimizer.h
Removed: llvm/trunk/include/llvm/LinkTimeOptimizer.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LinkTimeOptimizer.h?rev=52909&view=auto
==============================================================================
--- llvm/trunk/include/llvm/LinkTimeOptimizer.h (original)
+++ llvm/trunk/include/llvm/LinkTimeOptimizer.h (removed)
@@ -1,179 +0,0 @@
-//===-- llvm/LinkTimeOptimizer.h - Public 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 public interface to use LLVM link time optimization
-// library. This is intended to be used by linker to do link time optimization.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef __LTO_H__
-#define __LTO_H__
-
-#include <string>
-#include <vector>
-#include <set>
-#include <llvm/ADT/hash_map>
-#include <cstring>
-
-#define LLVM_LTO_VERSION 2
-
-namespace llvm {
-
- class Module;
- class GlobalValue;
- class TargetMachine;
-
- enum LTOStatus {
- LTO_UNKNOWN,
- LTO_OPT_SUCCESS,
- LTO_READ_SUCCESS,
- LTO_READ_FAILURE,
- LTO_WRITE_FAILURE,
- LTO_NO_TARGET,
- LTO_NO_WORK,
- LTO_MODULE_MERGE_FAILURE,
- LTO_ASM_FAILURE
- };
-
- enum LTOLinkageTypes {
- LTOExternalLinkage, // Externally visible function
- LTOLinkOnceLinkage, // Keep one copy of named function when linking (inline)
- LTOWeakLinkage, // Keep one copy of named function when linking (weak)
- LTOInternalLinkage, // Rename collisions when linking (static functions)
- LTOCommonLinkage // tentative definitions (usually equivalent to weak)
- };
-
- enum LTOVisibilityTypes {
- LTODefaultVisibility = 0, ///< The GV is visible
- LTOHiddenVisibility, ///< The GV is hidden
- LTOProtectedVisibility ///< The GV is protected
- };
-
-
- enum LTOCodeGenModel {
- LTO_CGM_Static,
- LTO_CGM_Dynamic,
- LTO_CGM_DynamicNoPIC
- };
-
- /// This class represents LLVM symbol information without exposing details
- /// of LLVM global values. It encapsulates symbol linkage information. This
- /// is typically used in hash_map where associated name identifies the
- /// the symbol name.
- class LLVMSymbol {
-
- public:
-
- LTOLinkageTypes getLinkage() const { return linkage; }
- LTOVisibilityTypes getVisibility() const { return visibility; }
- void mayBeNotUsed();
-
- LLVMSymbol (enum LTOLinkageTypes lt, enum LTOVisibilityTypes vis,
- GlobalValue *g, const std::string &n,
- const std::string &m, int a) : linkage(lt), visibility(vis),
- gv(g), name(n),
- mangledName(m), alignment(a) {}
-
- const char *getName() { return name.c_str(); }
- const char *getMangledName() { return mangledName.c_str(); }
- int getAlignment() { return alignment; }
-
- private:
- enum LTOLinkageTypes linkage;
- enum LTOVisibilityTypes visibility;
- GlobalValue *gv;
- std::string name;
- std::string mangledName;
- int alignment;
- };
-
- class string_compare {
- public:
- bool operator()(const char* left, const char* right) const {
- return (strcmp(left, right) == 0);
- }
- };
-
- /// This is abstract class to facilitate dlopen() interface.
- /// See LTO below for more info.
- class LinkTimeOptimizer {
- public:
- typedef hash_map<const char*, LLVMSymbol*, hash<const char*>,
- string_compare> NameToSymbolMap;
- typedef hash_map<const char*, Module*, hash<const char*>,
- string_compare> NameToModuleMap;
- virtual enum LTOStatus readLLVMObjectFile(const std::string &,
- NameToSymbolMap &,
- std::set<std::string> &) = 0;
- virtual enum LTOStatus optimizeModules(const std::string &,
- std::vector<const char*> &exportList,
- std::string &targetTriple,
- bool saveTemps, const char *) = 0;
- virtual void getTargetTriple(const std::string &, std::string &) = 0;
- virtual void removeModule (const std::string &InputFilename) = 0;
- virtual void setCodeGenModel(LTOCodeGenModel CGM) = 0;
- virtual void printVersion () = 0;
- virtual ~LinkTimeOptimizer() = 0;
- };
-
- /// This is the main link time optimization class. It exposes simple API
- /// to perform link time optimization using LLVM intermodular optimizer.
- class LTO : public LinkTimeOptimizer {
-
- public:
- typedef hash_map<const char*, LLVMSymbol*, hash<const char*>,
- string_compare> NameToSymbolMap;
- typedef hash_map<const char*, Module*, hash<const char*>,
- string_compare> NameToModuleMap;
-
- enum LTOStatus readLLVMObjectFile(const std::string &InputFilename,
- NameToSymbolMap &symbols,
- std::set<std::string> &references);
- enum LTOStatus optimizeModules(const std::string &OutputFilename,
- std::vector<const char*> &exportList,
- std::string &targetTriple,
- bool saveTemps, const char *);
- void getTargetTriple(const std::string &InputFilename,
- std::string &targetTriple);
- void removeModule (const std::string &InputFilename);
- void printVersion();
-
- void setCodeGenModel(LTOCodeGenModel CGM) {
- CGModel = CGM;
- }
-
- // Constructors and destructors
- LTO() : Target(NULL), CGModel(LTO_CGM_Dynamic) {
- /// TODO: Use Target info, it is available at this time.
- }
- ~LTO();
-
- private:
- Module *getModule (const std::string &InputFilename);
- enum LTOStatus optimize(Module *, std::ostream &,
- std::vector<const char *> &);
- void getTarget(Module *);
-
- private:
- std::vector<Module *> modules;
- NameToSymbolMap allSymbols;
- NameToModuleMap allModules;
- TargetMachine *Target;
- LTOCodeGenModel CGModel;
- };
-
-} // End llvm namespace
-
-/// 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 "C"
-llvm::LinkTimeOptimizer *createLLVMOptimizer(unsigned VERSION = LLVM_LTO_VERSION);
-
-#endif
More information about the llvm-commits
mailing list