mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-21 03:53:04 +02:00
89e5e1dadb
(Resubmitting after fixing missing file issue) With the changes in r263275, there are now more than just functions in the summary. Completed the renaming of data structures (started in r263275) to reflect the wider scope. In particular, changed the FunctionIndex* data structures to ModuleIndex*, and renamed related variables and comments. Also renamed the files to reflect the changes. A companion clang patch will immediately succeed this patch to reflect this renaming. llvm-svn: 263513
72 lines
2.4 KiB
C++
72 lines
2.4 KiB
C++
//===-- BitcodeWriterPass.h - Bitcode writing pass --------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
/// \file
|
|
///
|
|
/// This file provides a bitcode writing pass.
|
|
///
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLVM_BITCODE_BITCODEWRITERPASS_H
|
|
#define LLVM_BITCODE_BITCODEWRITERPASS_H
|
|
|
|
#include "llvm/ADT/StringRef.h"
|
|
|
|
namespace llvm {
|
|
class Module;
|
|
class ModulePass;
|
|
class raw_ostream;
|
|
class PreservedAnalyses;
|
|
|
|
/// \brief Create and return a pass that writes the module to the specified
|
|
/// ostream. Note that this pass is designed for use with the legacy pass
|
|
/// manager.
|
|
///
|
|
/// If \c ShouldPreserveUseListOrder, encode use-list order so it can be
|
|
/// reproduced when deserialized.
|
|
///
|
|
/// If \c EmitSummaryIndex, emit the summary index (currently
|
|
/// for use in ThinLTO optimization).
|
|
ModulePass *createBitcodeWriterPass(raw_ostream &Str,
|
|
bool ShouldPreserveUseListOrder = false,
|
|
bool EmitSummaryIndex = false);
|
|
|
|
/// \brief Pass for writing a module of IR out to a bitcode file.
|
|
///
|
|
/// Note that this is intended for use with the new pass manager. To construct
|
|
/// a pass for the legacy pass manager, use the function above.
|
|
class BitcodeWriterPass {
|
|
raw_ostream &OS;
|
|
bool ShouldPreserveUseListOrder;
|
|
bool EmitSummaryIndex;
|
|
|
|
public:
|
|
/// \brief Construct a bitcode writer pass around a particular output stream.
|
|
///
|
|
/// If \c ShouldPreserveUseListOrder, encode use-list order so it can be
|
|
/// reproduced when deserialized.
|
|
///
|
|
/// If \c EmitSummaryIndex, emit the summary index (currently
|
|
/// for use in ThinLTO optimization).
|
|
explicit BitcodeWriterPass(raw_ostream &OS,
|
|
bool ShouldPreserveUseListOrder = false,
|
|
bool EmitSummaryIndex = false)
|
|
: OS(OS), ShouldPreserveUseListOrder(ShouldPreserveUseListOrder),
|
|
EmitSummaryIndex(EmitSummaryIndex) {}
|
|
|
|
/// \brief Run the bitcode writer pass, and output the module to the selected
|
|
/// output stream.
|
|
PreservedAnalyses run(Module &M);
|
|
|
|
static StringRef name() { return "BitcodeWriterPass"; }
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|