brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 86c39b1 Raw
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