mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-21 18:29:46 +00:00
units. This was debated back and forth a bunch, but using references is now clearly cleaner. Of all the code written using pointers thus far, in only one place did it really make more sense to have a pointer. In most cases, this just removes immediate dereferencing from the code. I think it is much better to get errors on null IR units earlier, potentially at compile time, than to delay it. Most notably, the legacy pass manager uses references for its routines and so as more and more code works with both, the use of pointers was likely to become really annoying. I noticed this when I ported the domtree analysis over and wrote the entire thing with references only to have it fail to compile. =/ It seemed better to switch now than to delay. We can, of course, revisit this is we learn that references are really problematic in the API. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@225145 91177308-0d34-0410-b5e6-96231b3b80d8
52 lines
1.5 KiB
C++
52 lines
1.5 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.
|
|
ModulePass *createBitcodeWriterPass(raw_ostream &Str);
|
|
|
|
/// \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;
|
|
|
|
public:
|
|
/// \brief Construct a bitcode writer pass around a particular output stream.
|
|
explicit BitcodeWriterPass(raw_ostream &OS) : OS(OS) {}
|
|
|
|
/// \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
|