48 lines · c
1//===- LTO.h ----------------------------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLD_MACHO_LTO_H10#define LLD_MACHO_LTO_H11 12#include "lld/Common/LLVM.h"13#include "llvm/ADT/DenseSet.h"14#include "llvm/ADT/SmallString.h"15#include "llvm/Support/MemoryBuffer.h"16#include "llvm/Support/raw_ostream.h"17#include <memory>18#include <vector>19 20namespace llvm::lto {21class LTO;22} // namespace llvm::lto23 24namespace lld::macho {25 26class BitcodeFile;27class ObjFile;28 29class BitcodeCompiler {30public:31 BitcodeCompiler();32 33 void add(BitcodeFile &f);34 std::vector<ObjFile *> compile();35 36private:37 std::unique_ptr<llvm::lto::LTO> ltoObj;38 std::vector<llvm::SmallString<0>> buf;39 std::vector<std::unique_ptr<llvm::MemoryBuffer>> files;40 std::unique_ptr<llvm::raw_fd_ostream> indexFile;41 llvm::DenseSet<StringRef> thinIndices;42 bool hasFiles = false;43};44 45} // namespace lld::macho46 47#endif48