Mercurial > hg > CbC > CbC_llvm
diff lld/ELF/LTO.h @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children | c4bab56944e8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lld/ELF/LTO.h Thu Feb 13 15:10:13 2020 +0900 @@ -0,0 +1,62 @@ +//===- LTO.h ----------------------------------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file provides a way to combine bitcode files into one ELF +// file by compiling them using LLVM. +// +// If LTO is in use, your input files are not in regular ELF files +// but instead LLVM bitcode files. In that case, the linker has to +// convert bitcode files into the native format so that we can create +// an ELF file that contains native code. This file provides that +// functionality. +// +//===----------------------------------------------------------------------===// + +#ifndef LLD_ELF_LTO_H +#define LLD_ELF_LTO_H + +#include "lld/Common/LLVM.h" +#include "llvm/ADT/DenseSet.h" +#include "llvm/ADT/SmallString.h" +#include "llvm/Support/raw_ostream.h" +#include <memory> +#include <vector> + +namespace llvm { +namespace lto { +class LTO; +} +} // namespace llvm + +namespace lld { +namespace elf { + +class BitcodeFile; +class InputFile; +class LazyObjFile; + +class BitcodeCompiler { +public: + BitcodeCompiler(); + ~BitcodeCompiler(); + + void add(BitcodeFile &f); + std::vector<InputFile *> compile(); + +private: + std::unique_ptr<llvm::lto::LTO> ltoObj; + std::vector<SmallString<0>> buf; + std::vector<std::unique_ptr<MemoryBuffer>> files; + llvm::DenseSet<StringRef> usedStartStop; + std::unique_ptr<llvm::raw_fd_ostream> indexFile; + llvm::DenseSet<StringRef> thinIndices; +}; +} // namespace elf +} // namespace lld + +#endif