[llvm] r275476 - Move legacy LTO interface headers to legacy/ directory.
Peter Collingbourne via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 14 14:21:17 PDT 2016
Author: pcc
Date: Thu Jul 14 16:21:16 2016
New Revision: 275476
URL: http://llvm.org/viewvc/llvm-project?rev=275476&view=rev
Log:
Move legacy LTO interface headers to legacy/ directory.
Differential Revision: https://reviews.llvm.org/D22173
Added:
llvm/trunk/include/llvm/LTO/legacy/
llvm/trunk/include/llvm/LTO/legacy/LTOCodeGenerator.h
- copied, changed from r275474, llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h
llvm/trunk/include/llvm/LTO/legacy/LTOModule.h
- copied, changed from r275474, llvm/trunk/include/llvm/LTO/LTOModule.h
llvm/trunk/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h
- copied, changed from r275474, llvm/trunk/include/llvm/LTO/ThinLTOCodeGenerator.h
llvm/trunk/include/llvm/LTO/legacy/UpdateCompilerUsed.h
- copied, changed from r275474, llvm/trunk/include/llvm/LTO/UpdateCompilerUsed.h
Removed:
llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h
llvm/trunk/include/llvm/LTO/LTOModule.h
llvm/trunk/include/llvm/LTO/ThinLTOCodeGenerator.h
llvm/trunk/include/llvm/LTO/UpdateCompilerUsed.h
Modified:
llvm/trunk/lib/LTO/LTOCodeGenerator.cpp
llvm/trunk/lib/LTO/LTOModule.cpp
llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp
llvm/trunk/lib/LTO/UpdateCompilerUsed.cpp
llvm/trunk/tools/llvm-lto/llvm-lto.cpp
llvm/trunk/tools/lto/lto.cpp
Removed: llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h?rev=275475&view=auto
==============================================================================
--- llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h (original)
+++ llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h (removed)
@@ -1,236 +0,0 @@
-//===-LTOCodeGenerator.h - LLVM Link Time Optimizer -----------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file declares the LTOCodeGenerator class.
-//
-// LTO compilation consists of three phases: Pre-IPO, IPO and Post-IPO.
-//
-// The Pre-IPO phase compiles source code into bitcode file. The resulting
-// bitcode files, along with object files and libraries, will be fed to the
-// linker to through the IPO and Post-IPO phases. By using obj-file extension,
-// the resulting bitcode file disguises itself as an object file, and therefore
-// obviates the need of writing a special set of the make-rules only for LTO
-// compilation.
-//
-// The IPO phase perform inter-procedural analyses and optimizations, and
-// the Post-IPO consists two sub-phases: intra-procedural scalar optimizations
-// (SOPT), and intra-procedural target-dependent code generator (CG).
-//
-// As of this writing, we don't separate IPO and the Post-IPO SOPT. They
-// are intermingled together, and are driven by a single pass manager (see
-// PassManagerBuilder::populateLTOPassManager()).
-//
-// The "LTOCodeGenerator" is the driver for the IPO and Post-IPO stages.
-// The "CodeGenerator" here is bit confusing. Don't confuse the "CodeGenerator"
-// with the machine specific code generator.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LTO_LTOCODEGENERATOR_H
-#define LLVM_LTO_LTOCODEGENERATOR_H
-
-#include "llvm-c/lto.h"
-#include "llvm/ADT/SmallPtrSet.h"
-#include "llvm/ADT/StringMap.h"
-#include "llvm/ADT/StringSet.h"
-#include "llvm/IR/GlobalValue.h"
-#include "llvm/IR/Module.h"
-#include "llvm/Target/TargetMachine.h"
-#include "llvm/Target/TargetOptions.h"
-#include <string>
-#include <vector>
-
-namespace llvm {
-template <typename T> class ArrayRef;
- class LLVMContext;
- class DiagnosticInfo;
- class Linker;
- class Mangler;
- class MemoryBuffer;
- class TargetLibraryInfo;
- class TargetMachine;
- class raw_ostream;
- class raw_pwrite_stream;
-
-//===----------------------------------------------------------------------===//
-/// C++ class which implements the opaque lto_code_gen_t type.
-///
-struct LTOCodeGenerator {
- static const char *getVersionString();
-
- LTOCodeGenerator(LLVMContext &Context);
- ~LTOCodeGenerator();
-
- /// Merge given module. Return true on success.
- ///
- /// Resets \a HasVerifiedInput.
- bool addModule(struct LTOModule *);
-
- /// Set the destination module.
- ///
- /// Resets \a HasVerifiedInput.
- void setModule(std::unique_ptr<LTOModule> M);
-
- void setTargetOptions(const TargetOptions &Options);
- void setDebugInfo(lto_debug_model);
- void setCodePICModel(Optional<Reloc::Model> Model) { RelocModel = Model; }
-
- /// Set the file type to be emitted (assembly or object code).
- /// The default is TargetMachine::CGFT_ObjectFile.
- void setFileType(TargetMachine::CodeGenFileType FT) { FileType = FT; }
-
- void setCpu(const char *MCpu) { this->MCpu = MCpu; }
- void setAttr(const char *MAttr) { this->MAttr = MAttr; }
- void setOptLevel(unsigned OptLevel);
-
- void setShouldInternalize(bool Value) { ShouldInternalize = Value; }
- void setShouldEmbedUselists(bool Value) { ShouldEmbedUselists = Value; }
-
- /// Restore linkage of globals
- ///
- /// When set, the linkage of globals will be restored prior to code
- /// generation. That is, a global symbol that had external linkage prior to
- /// LTO will be emitted with external linkage again; and a local will remain
- /// local. Note that this option only affects the end result - globals may
- /// still be internalized in the process of LTO and may be modified and/or
- /// deleted where legal.
- ///
- /// The default behavior will internalize globals (unless on the preserve
- /// list) and, if parallel code generation is enabled, will externalize
- /// all locals.
- void setShouldRestoreGlobalsLinkage(bool Value) {
- ShouldRestoreGlobalsLinkage = Value;
- }
-
- void addMustPreserveSymbol(StringRef Sym) { MustPreserveSymbols[Sym] = 1; }
-
- /// Pass options to the driver and optimization passes.
- ///
- /// These options are not necessarily for debugging purpose (the function
- /// name is misleading). This function should be called before
- /// LTOCodeGenerator::compilexxx(), and
- /// LTOCodeGenerator::writeMergedModules().
- void setCodeGenDebugOptions(const char *Opts);
-
- /// Parse the options set in setCodeGenDebugOptions.
- ///
- /// Like \a setCodeGenDebugOptions(), this must be called before
- /// LTOCodeGenerator::compilexxx() and
- /// LTOCodeGenerator::writeMergedModules().
- void parseCodeGenDebugOptions();
-
- /// Write the merged module to the file specified by the given path. Return
- /// true on success.
- ///
- /// Calls \a verifyMergedModuleOnce().
- bool writeMergedModules(const char *Path);
-
- /// Compile the merged module into a *single* output file; the path to output
- /// file is returned to the caller via argument "name". Return true on
- /// success.
- ///
- /// \note It is up to the linker to remove the intermediate output file. Do
- /// not try to remove the object file in LTOCodeGenerator's destructor as we
- /// don't who (LTOCodeGenerator or the output file) will last longer.
- bool compile_to_file(const char **Name, bool DisableVerify,
- bool DisableInline, bool DisableGVNLoadPRE,
- bool DisableVectorization);
-
- /// As with compile_to_file(), this function compiles the merged module into
- /// single output file. Instead of returning the output file path to the
- /// caller (linker), it brings the output to a buffer, and returns the buffer
- /// to the caller. This function should delete the intermediate file once
- /// its content is brought to memory. Return NULL if the compilation was not
- /// successful.
- std::unique_ptr<MemoryBuffer> compile(bool DisableVerify, bool DisableInline,
- bool DisableGVNLoadPRE,
- bool DisableVectorization);
-
- /// Optimizes the merged module. Returns true on success.
- ///
- /// Calls \a verifyMergedModuleOnce().
- bool optimize(bool DisableVerify, bool DisableInline, bool DisableGVNLoadPRE,
- bool DisableVectorization);
-
- /// Compiles the merged optimized module into a single output file. It brings
- /// the output to a buffer, and returns the buffer to the caller. Return NULL
- /// if the compilation was not successful.
- std::unique_ptr<MemoryBuffer> compileOptimized();
-
- /// Compile the merged optimized module into out.size() output files each
- /// representing a linkable partition of the module. If out contains more
- /// than one element, code generation is done in parallel with out.size()
- /// threads. Output files will be written to members of out. Returns true on
- /// success.
- ///
- /// Calls \a verifyMergedModuleOnce().
- bool compileOptimized(ArrayRef<raw_pwrite_stream *> Out);
-
- void setDiagnosticHandler(lto_diagnostic_handler_t, void *);
-
- LLVMContext &getContext() { return Context; }
-
- void resetMergedModule() { MergedModule.reset(); }
-
-private:
- void initializeLTOPasses();
-
- /// Verify the merged module on first call.
- ///
- /// Sets \a HasVerifiedInput on first call and doesn't run again on the same
- /// input.
- void verifyMergedModuleOnce();
-
- bool compileOptimizedToFile(const char **Name);
- void restoreLinkageForExternals();
- void applyScopeRestrictions();
- void preserveDiscardableGVs(
- Module &TheModule,
- llvm::function_ref<bool(const GlobalValue &)> mustPreserveGV);
-
- bool determineTarget();
- std::unique_ptr<TargetMachine> createTargetMachine();
-
- static void DiagnosticHandler(const DiagnosticInfo &DI, void *Context);
-
- void DiagnosticHandler2(const DiagnosticInfo &DI);
-
- void emitError(const std::string &ErrMsg);
- void emitWarning(const std::string &ErrMsg);
-
- LLVMContext &Context;
- std::unique_ptr<Module> MergedModule;
- std::unique_ptr<Linker> TheLinker;
- std::unique_ptr<TargetMachine> TargetMach;
- bool EmitDwarfDebugInfo = false;
- bool ScopeRestrictionsDone = false;
- bool HasVerifiedInput = false;
- Optional<Reloc::Model> RelocModel;
- StringSet<> MustPreserveSymbols;
- StringSet<> AsmUndefinedRefs;
- StringMap<GlobalValue::LinkageTypes> ExternalSymbols;
- std::vector<std::string> CodegenOptions;
- std::string FeatureStr;
- std::string MCpu;
- std::string MAttr;
- std::string NativeObjectPath;
- TargetOptions Options;
- CodeGenOpt::Level CGOptLevel = CodeGenOpt::Default;
- const Target *MArch = nullptr;
- std::string TripleStr;
- unsigned OptLevel = 2;
- lto_diagnostic_handler_t DiagHandler = nullptr;
- void *DiagContext = nullptr;
- bool ShouldInternalize = true;
- bool ShouldEmbedUselists = false;
- bool ShouldRestoreGlobalsLinkage = false;
- TargetMachine::CodeGenFileType FileType = TargetMachine::CGFT_ObjectFile;
-};
-}
-#endif
Removed: llvm/trunk/include/llvm/LTO/LTOModule.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/LTOModule.h?rev=275475&view=auto
==============================================================================
--- llvm/trunk/include/llvm/LTO/LTOModule.h (original)
+++ llvm/trunk/include/llvm/LTO/LTOModule.h (removed)
@@ -1,212 +0,0 @@
-//===-LTOModule.h - LLVM Link Time Optimizer ------------------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file declares the LTOModule class.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LTO_LTOMODULE_H
-#define LLVM_LTO_LTOMODULE_H
-
-#include "llvm-c/lto.h"
-#include "llvm/ADT/StringMap.h"
-#include "llvm/ADT/StringSet.h"
-#include "llvm/IR/Module.h"
-#include "llvm/Object/IRObjectFile.h"
-#include "llvm/Target/TargetMachine.h"
-#include <string>
-#include <vector>
-
-// Forward references to llvm classes.
-namespace llvm {
- class Function;
- class GlobalValue;
- class MemoryBuffer;
- class TargetOptions;
- class Value;
-
-//===----------------------------------------------------------------------===//
-/// C++ class which implements the opaque lto_module_t type.
-///
-struct LTOModule {
-private:
- struct NameAndAttributes {
- const char *name;
- uint32_t attributes;
- bool isFunction;
- const GlobalValue *symbol;
- };
-
- std::unique_ptr<LLVMContext> OwnedContext;
-
- std::string LinkerOpts;
-
- std::unique_ptr<object::IRObjectFile> IRFile;
- std::unique_ptr<TargetMachine> _target;
- std::vector<NameAndAttributes> _symbols;
-
- // _defines and _undefines only needed to disambiguate tentative definitions
- StringSet<> _defines;
- StringMap<NameAndAttributes> _undefines;
- std::vector<const char*> _asm_undefines;
-
- LTOModule(std::unique_ptr<object::IRObjectFile> Obj, TargetMachine *TM);
-
-public:
- ~LTOModule();
-
- /// Returns 'true' if the file or memory contents is LLVM bitcode.
- static bool isBitcodeFile(const void *mem, size_t length);
- static bool isBitcodeFile(const char *path);
-
- /// Returns 'true' if the Module is produced for ThinLTO.
- bool isThinLTO();
-
- /// Returns 'true' if the memory buffer is LLVM bitcode for the specified
- /// triple.
- static bool isBitcodeForTarget(MemoryBuffer *memBuffer,
- StringRef triplePrefix);
-
- /// Returns a string representing the producer identification stored in the
- /// bitcode, or "" if the bitcode does not contains any.
- ///
- static std::string getProducerString(MemoryBuffer *Buffer);
-
- /// Create a MemoryBuffer from a memory range with an optional name.
- static std::unique_ptr<MemoryBuffer>
- makeBuffer(const void *mem, size_t length, StringRef name = "");
-
- /// Create an LTOModule. N.B. These methods take ownership of the buffer. The
- /// caller must have initialized the Targets, the TargetMCs, the AsmPrinters,
- /// and the AsmParsers by calling:
- ///
- /// InitializeAllTargets();
- /// InitializeAllTargetMCs();
- /// InitializeAllAsmPrinters();
- /// InitializeAllAsmParsers();
- static ErrorOr<std::unique_ptr<LTOModule>>
- createFromFile(LLVMContext &Context, const char *path,
- const TargetOptions &options);
- static ErrorOr<std::unique_ptr<LTOModule>>
- createFromOpenFile(LLVMContext &Context, int fd, const char *path,
- size_t size, const TargetOptions &options);
- static ErrorOr<std::unique_ptr<LTOModule>>
- createFromOpenFileSlice(LLVMContext &Context, int fd, const char *path,
- size_t map_size, off_t offset,
- const TargetOptions &options);
- static ErrorOr<std::unique_ptr<LTOModule>>
- createFromBuffer(LLVMContext &Context, const void *mem, size_t length,
- const TargetOptions &options, StringRef path = "");
- static ErrorOr<std::unique_ptr<LTOModule>>
- createInLocalContext(std::unique_ptr<LLVMContext> Context, const void *mem,
- size_t length, const TargetOptions &options,
- StringRef path);
-
- const Module &getModule() const {
- return const_cast<LTOModule*>(this)->getModule();
- }
- Module &getModule() {
- return IRFile->getModule();
- }
-
- std::unique_ptr<Module> takeModule() { return IRFile->takeModule(); }
-
- /// Return the Module's target triple.
- const std::string &getTargetTriple() {
- return getModule().getTargetTriple();
- }
-
- /// Set the Module's target triple.
- void setTargetTriple(StringRef Triple) {
- getModule().setTargetTriple(Triple);
- }
-
- /// Get the number of symbols
- uint32_t getSymbolCount() {
- return _symbols.size();
- }
-
- /// Get the attributes for a symbol at the specified index.
- lto_symbol_attributes getSymbolAttributes(uint32_t index) {
- if (index < _symbols.size())
- return lto_symbol_attributes(_symbols[index].attributes);
- return lto_symbol_attributes(0);
- }
-
- /// Get the name of the symbol at the specified index.
- const char *getSymbolName(uint32_t index) {
- if (index < _symbols.size())
- return _symbols[index].name;
- return nullptr;
- }
-
- const GlobalValue *getSymbolGV(uint32_t index) {
- if (index < _symbols.size())
- return _symbols[index].symbol;
- return nullptr;
- }
-
- const char *getLinkerOpts() {
- return LinkerOpts.c_str();
- }
-
- const std::vector<const char*> &getAsmUndefinedRefs() {
- return _asm_undefines;
- }
-
-private:
- /// Parse metadata from the module
- // FIXME: it only parses "Linker Options" metadata at the moment
- void parseMetadata();
-
- /// Parse the symbols from the module and model-level ASM and add them to
- /// either the defined or undefined lists.
- void parseSymbols();
-
- /// Add a symbol which isn't defined just yet to a list to be resolved later.
- void addPotentialUndefinedSymbol(const object::BasicSymbolRef &Sym,
- bool isFunc);
-
- /// Add a defined symbol to the list.
- void addDefinedSymbol(const char *Name, const GlobalValue *def,
- bool isFunction);
-
- /// Add a data symbol as defined to the list.
- void addDefinedDataSymbol(const object::BasicSymbolRef &Sym);
- void addDefinedDataSymbol(const char*Name, const GlobalValue *v);
-
- /// Add a function symbol as defined to the list.
- void addDefinedFunctionSymbol(const object::BasicSymbolRef &Sym);
- void addDefinedFunctionSymbol(const char *Name, const Function *F);
-
- /// Add a global symbol from module-level ASM to the defined list.
- void addAsmGlobalSymbol(const char *, lto_symbol_attributes scope);
-
- /// Add a global symbol from module-level ASM to the undefined list.
- void addAsmGlobalSymbolUndef(const char *);
-
- /// Parse i386/ppc ObjC class data structure.
- void addObjCClass(const GlobalVariable *clgv);
-
- /// Parse i386/ppc ObjC category data structure.
- void addObjCCategory(const GlobalVariable *clgv);
-
- /// Parse i386/ppc ObjC class list data structure.
- void addObjCClassRef(const GlobalVariable *clgv);
-
- /// Get string that the data pointer points to.
- bool objcClassNameFromExpression(const Constant *c, std::string &name);
-
- /// Create an LTOModule (private version).
- static ErrorOr<std::unique_ptr<LTOModule>>
- makeLTOModule(MemoryBufferRef Buffer, const TargetOptions &options,
- LLVMContext &Context, bool ShouldBeLazy);
-};
-}
-#endif
Removed: llvm/trunk/include/llvm/LTO/ThinLTOCodeGenerator.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/ThinLTOCodeGenerator.h?rev=275475&view=auto
==============================================================================
--- llvm/trunk/include/llvm/LTO/ThinLTOCodeGenerator.h (original)
+++ llvm/trunk/include/llvm/LTO/ThinLTOCodeGenerator.h (removed)
@@ -1,276 +0,0 @@
-//===-ThinLTOCodeGenerator.h - LLVM Link Time Optimizer -------------------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file declares the ThinLTOCodeGenerator class, similar to the
-// LTOCodeGenerator but for the ThinLTO scheme. It provides an interface for
-// linker plugin.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LTO_THINLTOCODEGENERATOR_H
-#define LLVM_LTO_THINLTOCODEGENERATOR_H
-
-#include "llvm-c/lto.h"
-#include "llvm/ADT/StringSet.h"
-#include "llvm/ADT/Triple.h"
-#include "llvm/IR/ModuleSummaryIndex.h"
-#include "llvm/Support/CodeGen.h"
-#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Target/TargetOptions.h"
-
-#include <string>
-
-namespace llvm {
-class StringRef;
-class LLVMContext;
-class TargetMachine;
-
-/// Helper to gather options relevant to the target machine creation
-struct TargetMachineBuilder {
- Triple TheTriple;
- std::string MCpu;
- std::string MAttr;
- TargetOptions Options;
- Optional<Reloc::Model> RelocModel;
- CodeGenOpt::Level CGOptLevel = CodeGenOpt::Default;
-
- std::unique_ptr<TargetMachine> create() const;
-};
-
-/// This class define an interface similar to the LTOCodeGenerator, but adapted
-/// for ThinLTO processing.
-/// 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.
-class ThinLTOCodeGenerator {
-public:
- /// Add given module to the code generator.
- void addModule(StringRef Identifier, StringRef Data);
-
- /**
- * Adds to a list of all global symbols that must exist in the final generated
- * code. If a symbol is not listed there, it will be optimized away if it is
- * inlined into every usage.
- */
- void preserveSymbol(StringRef Name);
-
- /**
- * Adds to a list of all 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 crossReferenceSymbol(StringRef Name);
-
- /**
- * Process all the modules that were added to the code generator in parallel.
- *
- * Client can access the resulting object files using getProducedBinaries()
- */
- void run();
-
- /**
- * Return the "in memory" binaries produced by the code generator.
- */
- std::vector<std::unique_ptr<MemoryBuffer>> &getProducedBinaries() {
- return ProducedBinaries;
- }
-
- /**
- * \defgroup Options setters
- * @{
- */
-
- /**
- * \defgroup Cache controlling options
- *
- * These entry points control the ThinLTO cache. The cache is intended to
- * support incremental build, and thus needs to be persistent accross build.
- * The client enabled the cache by supplying a path to an existing directory.
- * The code generator will use this to store objects files that may be reused
- * during a subsequent build.
- * To avoid filling the disk space, a few knobs are provided:
- * - The pruning interval limit the frequency at which the garbage collector
- * will try to scan the cache directory to prune it from expired entries.
- * Setting to -1 disable the pruning (default).
- * - The pruning expiration time indicates to the garbage collector how old
- * an entry needs to be to be removed.
- * - Finally, the garbage collector can be instructed to prune the cache till
- * the occupied space goes below a threshold.
- * @{
- */
-
- struct CachingOptions {
- std::string Path; // Path to the cache, empty to disable.
- int PruningInterval = 1200; // seconds, -1 to disable pruning.
- unsigned int Expiration = 7 * 24 * 3600; // seconds (1w default).
- unsigned MaxPercentageOfAvailableSpace = 75; // percentage.
- };
-
- /// Provide a path to a directory where to store the cached files for
- /// incremental build.
- void setCacheDir(std::string Path) { CacheOptions.Path = std::move(Path); }
-
- /// Cache policy: interval (seconds) between two prune of the cache. Set to a
- /// negative value (default) to disable pruning. A value of 0 will be ignored.
- void setCachePruningInterval(int Interval) {
- if (Interval)
- CacheOptions.PruningInterval = Interval;
- }
-
- /// Cache policy: expiration (in seconds) for an entry.
- /// A value of 0 will be ignored.
- void setCacheEntryExpiration(unsigned Expiration) {
- if (Expiration)
- CacheOptions.Expiration = Expiration;
- }
-
- /**
- * Sets the maximum cache size that can be persistent across build, in terms
- * of percentage of the available space on the the disk. Set to 100 to
- * indicate no limit, 50 to indicate that the cache size will not be left over
- * half the available space. A value over 100 will be reduced to 100, and a
- * value of 0 will be ignored.
- *
- *
- * The formula looks like:
- * AvailableSpace = FreeSpace + ExistingCacheSize
- * NewCacheSize = AvailableSpace * P/100
- *
- */
- void setMaxCacheSizeRelativeToAvailableSpace(unsigned Percentage) {
- if (Percentage)
- CacheOptions.MaxPercentageOfAvailableSpace = Percentage;
- }
-
- /**@}*/
-
- /// Set the path to a directory where to save temporaries at various stages of
- /// the processing.
- void setSaveTempsDir(std::string Path) { SaveTempsDir = std::move(Path); }
-
- /// CPU to use to initialize the TargetMachine
- void setCpu(std::string Cpu) { TMBuilder.MCpu = std::move(Cpu); }
-
- /// Subtarget attributes
- void setAttr(std::string MAttr) { TMBuilder.MAttr = std::move(MAttr); }
-
- /// TargetMachine options
- void setTargetOptions(TargetOptions Options) {
- TMBuilder.Options = std::move(Options);
- }
-
- /// CodeModel
- void setCodePICModel(Optional<Reloc::Model> Model) {
- TMBuilder.RelocModel = Model;
- }
-
- /// CodeGen optimization level
- void setCodeGenOptLevel(CodeGenOpt::Level CGOptLevel) {
- TMBuilder.CGOptLevel = CGOptLevel;
- }
-
- /// Disable CodeGen, only run the stages till codegen and stop. The output
- /// will be bitcode.
- void disableCodeGen(bool Disable) { DisableCodeGen = Disable; }
-
- /// Perform CodeGen only: disable all other stages.
- void setCodeGenOnly(bool CGOnly) { CodeGenOnly = CGOnly; }
-
- /**@}*/
-
- /**
- * \defgroup Set of APIs to run individual stages in isolation.
- * @{
- */
-
- /**
- * Produce the combined summary index from all the bitcode files:
- * "thin-link".
- */
- std::unique_ptr<ModuleSummaryIndex> linkCombinedIndex();
-
- /**
- * Perform promotion and renaming of exported internal functions,
- * and additionally resolve weak and linkonce symbols.
- * Index is updated to reflect linkage changes from weak resolution.
- */
- void promote(Module &Module, ModuleSummaryIndex &Index);
-
- /**
- * Compute and emit the imported files for module at \p ModulePath.
- */
- static void emitImports(StringRef ModulePath, StringRef OutputName,
- ModuleSummaryIndex &Index);
-
- /**
- * Perform cross-module importing for the module identified by
- * ModuleIdentifier.
- */
- void crossModuleImport(Module &Module, ModuleSummaryIndex &Index);
-
- /**
- * Compute the list of summaries needed for importing into module.
- */
- static void gatherImportedSummariesForModule(
- StringRef ModulePath, ModuleSummaryIndex &Index,
- std::map<std::string, GVSummaryMapTy> &ModuleToSummariesForIndex);
-
- /**
- * Perform internalization. Index is updated to reflect linkage changes.
- */
- void internalize(Module &Module, ModuleSummaryIndex &Index);
-
- /**
- * Perform post-importing ThinLTO optimizations.
- */
- void optimize(Module &Module);
-
- /**
- * Perform ThinLTO CodeGen.
- */
- std::unique_ptr<MemoryBuffer> codegen(Module &Module);
-
- /**@}*/
-
-private:
- /// Helper factory to build a TargetMachine
- TargetMachineBuilder TMBuilder;
-
- /// Vector holding the in-memory buffer containing the produced binaries.
- std::vector<std::unique_ptr<MemoryBuffer>> ProducedBinaries;
-
- /// Vector holding the input buffers containing the bitcode modules to
- /// process.
- std::vector<MemoryBufferRef> Modules;
-
- /// Set of symbols that need to be preserved outside of the set of bitcode
- /// files.
- StringSet<> PreservedSymbols;
-
- /// Set of symbols that are cross-referenced between bitcode files.
- StringSet<> CrossReferencedSymbols;
-
- /// Control the caching behavior.
- CachingOptions CacheOptions;
-
- /// Path to a directory to save the temporary bitcode files.
- std::string SaveTempsDir;
-
- /// Flag to enable/disable CodeGen. When set to true, the process stops after
- /// optimizations and a bitcode is produced.
- bool DisableCodeGen = false;
-
- /// Flag to indicate that only the CodeGen will be performed, no cross-module
- /// importing or optimization.
- bool CodeGenOnly = false;
-};
-}
-#endif
Removed: llvm/trunk/include/llvm/LTO/UpdateCompilerUsed.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/UpdateCompilerUsed.h?rev=275475&view=auto
==============================================================================
--- llvm/trunk/include/llvm/LTO/UpdateCompilerUsed.h (original)
+++ llvm/trunk/include/llvm/LTO/UpdateCompilerUsed.h (removed)
@@ -1,32 +0,0 @@
-//==------ UpdateCompilerUsed.h - LLVM Link Time Optimizer Utility --------===//
-//
-// The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file declares a helper class to update llvm.compiler_used metadata.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_LTO_UPDATE_COMPILER_USED_H
-#define LLVM_LTO_UPDATE_COMPILER_USED_H
-
-#include "llvm/ADT/StringSet.h"
-#include "llvm/IR/GlobalValue.h"
-
-namespace llvm {
-class Module;
-class TargetMachine;
-
-/// Find all globals in \p TheModule that are referenced in
-/// \p AsmUndefinedRefs, as well as the user-supplied functions definitions that
-/// are also libcalls, and create or update the magic "llvm.compiler_used"
-/// global in \p TheModule.
-void updateCompilerUsed(Module &TheModule, const TargetMachine &TM,
- const StringSet<> &AsmUndefinedRefs);
-}
-
-#endif // LLVM_LTO_UPDATE_COMPILER_USED_H
Copied: llvm/trunk/include/llvm/LTO/legacy/LTOCodeGenerator.h (from r275474, llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/legacy/LTOCodeGenerator.h?p2=llvm/trunk/include/llvm/LTO/legacy/LTOCodeGenerator.h&p1=llvm/trunk/include/llvm/LTO/LTOCodeGenerator.h&r1=275474&r2=275476&rev=275476&view=diff
==============================================================================
(empty)
Copied: llvm/trunk/include/llvm/LTO/legacy/LTOModule.h (from r275474, llvm/trunk/include/llvm/LTO/LTOModule.h)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/legacy/LTOModule.h?p2=llvm/trunk/include/llvm/LTO/legacy/LTOModule.h&p1=llvm/trunk/include/llvm/LTO/LTOModule.h&r1=275474&r2=275476&rev=275476&view=diff
==============================================================================
(empty)
Copied: llvm/trunk/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h (from r275474, llvm/trunk/include/llvm/LTO/ThinLTOCodeGenerator.h)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h?p2=llvm/trunk/include/llvm/LTO/legacy/ThinLTOCodeGenerator.h&p1=llvm/trunk/include/llvm/LTO/ThinLTOCodeGenerator.h&r1=275474&r2=275476&rev=275476&view=diff
==============================================================================
(empty)
Copied: llvm/trunk/include/llvm/LTO/legacy/UpdateCompilerUsed.h (from r275474, llvm/trunk/include/llvm/LTO/UpdateCompilerUsed.h)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/LTO/legacy/UpdateCompilerUsed.h?p2=llvm/trunk/include/llvm/LTO/legacy/UpdateCompilerUsed.h&p1=llvm/trunk/include/llvm/LTO/UpdateCompilerUsed.h&r1=275474&r2=275476&rev=275476&view=diff
==============================================================================
(empty)
Modified: llvm/trunk/lib/LTO/LTOCodeGenerator.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOCodeGenerator.cpp?rev=275476&r1=275475&r2=275476&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/LTOCodeGenerator.cpp (original)
+++ llvm/trunk/lib/LTO/LTOCodeGenerator.cpp Thu Jul 14 16:21:16 2016
@@ -12,8 +12,7 @@
//
//===----------------------------------------------------------------------===//
-#include "llvm/LTO/LTOCodeGenerator.h"
-#include "llvm/LTO/UpdateCompilerUsed.h"
+#include "llvm/LTO/legacy/LTOCodeGenerator.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/ADT/StringExtras.h"
@@ -36,7 +35,8 @@
#include "llvm/IR/Module.h"
#include "llvm/IR/Verifier.h"
#include "llvm/InitializePasses.h"
-#include "llvm/LTO/LTOModule.h"
+#include "llvm/LTO/legacy/LTOModule.h"
+#include "llvm/LTO/legacy/UpdateCompilerUsed.h"
#include "llvm/Linker/Linker.h"
#include "llvm/MC/MCAsmInfo.h"
#include "llvm/MC/MCContext.h"
Modified: llvm/trunk/lib/LTO/LTOModule.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/LTOModule.cpp?rev=275476&r1=275475&r2=275476&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/LTOModule.cpp (original)
+++ llvm/trunk/lib/LTO/LTOModule.cpp Thu Jul 14 16:21:16 2016
@@ -12,7 +12,7 @@
//
//===----------------------------------------------------------------------===//
-#include "llvm/LTO/LTOModule.h"
+#include "llvm/LTO/legacy/LTOModule.h"
#include "llvm/ADT/Triple.h"
#include "llvm/Bitcode/ReaderWriter.h"
#include "llvm/CodeGen/Analysis.h"
Modified: llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp?rev=275476&r1=275475&r2=275476&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp (original)
+++ llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp Thu Jul 14 16:21:16 2016
@@ -12,7 +12,7 @@
//
//===----------------------------------------------------------------------===//
-#include "llvm/LTO/ThinLTOCodeGenerator.h"
+#include "llvm/LTO/legacy/ThinLTOCodeGenerator.h"
#ifdef HAVE_LLVM_REVISION
#include "LLVMLTORevision.h"
Modified: llvm/trunk/lib/LTO/UpdateCompilerUsed.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/LTO/UpdateCompilerUsed.cpp?rev=275476&r1=275475&r2=275476&view=diff
==============================================================================
--- llvm/trunk/lib/LTO/UpdateCompilerUsed.cpp (original)
+++ llvm/trunk/lib/LTO/UpdateCompilerUsed.cpp Thu Jul 14 16:21:16 2016
@@ -11,10 +11,10 @@
//
//===----------------------------------------------------------------------===//
+#include "llvm/LTO/legacy/UpdateCompilerUsed.h"
#include "llvm/Analysis/TargetLibraryInfo.h"
#include "llvm/IR/LegacyPassManager.h"
#include "llvm/IR/Mangler.h"
-#include "llvm/LTO/UpdateCompilerUsed.h"
#include "llvm/Target/TargetLowering.h"
#include "llvm/Target/TargetSubtargetInfo.h"
#include "llvm/Transforms/IPO/Internalize.h"
Modified: llvm/trunk/tools/llvm-lto/llvm-lto.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-lto/llvm-lto.cpp?rev=275476&r1=275475&r2=275476&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-lto/llvm-lto.cpp (original)
+++ llvm/trunk/tools/llvm-lto/llvm-lto.cpp Thu Jul 14 16:21:16 2016
@@ -19,9 +19,9 @@
#include "llvm/IR/LLVMContext.h"
#include "llvm/IR/Verifier.h"
#include "llvm/IRReader/IRReader.h"
-#include "llvm/LTO/LTOCodeGenerator.h"
-#include "llvm/LTO/LTOModule.h"
-#include "llvm/LTO/ThinLTOCodeGenerator.h"
+#include "llvm/LTO/legacy/LTOCodeGenerator.h"
+#include "llvm/LTO/legacy/LTOModule.h"
+#include "llvm/LTO/legacy/ThinLTOCodeGenerator.h"
#include "llvm/Object/ModuleSummaryIndexObjectFile.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FileSystem.h"
Modified: llvm/trunk/tools/lto/lto.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/lto/lto.cpp?rev=275476&r1=275475&r2=275476&view=diff
==============================================================================
--- llvm/trunk/tools/lto/lto.cpp (original)
+++ llvm/trunk/tools/lto/lto.cpp Thu Jul 14 16:21:16 2016
@@ -19,9 +19,9 @@
#include "llvm/IR/DiagnosticInfo.h"
#include "llvm/IR/DiagnosticPrinter.h"
#include "llvm/IR/LLVMContext.h"
-#include "llvm/LTO/LTOCodeGenerator.h"
-#include "llvm/LTO/LTOModule.h"
-#include "llvm/LTO/ThinLTOCodeGenerator.h"
+#include "llvm/LTO/legacy/LTOCodeGenerator.h"
+#include "llvm/LTO/legacy/LTOModule.h"
+#include "llvm/LTO/legacy/ThinLTOCodeGenerator.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Signals.h"
#include "llvm/Support/TargetSelect.h"
More information about the llvm-commits
mailing list