uselistorder: Pull bit through BitcodeWriterPass

Now the callers of `BitcodeWriterPass` decide whether or not to preserve
bitcode use-list order.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234959 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Duncan P. N. Exon Smith
2015-04-15 00:34:24 +00:00
parent bff2c565df
commit e005d71e4b
6 changed files with 34 additions and 14 deletions

View File

@ -20,22 +20,25 @@
using namespace llvm;
PreservedAnalyses BitcodeWriterPass::run(Module &M) {
WriteBitcodeToFile(&M, OS, shouldPreserveBitcodeUseListOrder());
WriteBitcodeToFile(&M, OS, ShouldPreserveUseListOrder);
return PreservedAnalyses::all();
}
namespace {
class WriteBitcodePass : public ModulePass {
raw_ostream &OS; // raw_ostream to print on
bool ShouldPreserveUseListOrder;
public:
static char ID; // Pass identification, replacement for typeid
explicit WriteBitcodePass(raw_ostream &o)
: ModulePass(ID), OS(o) {}
explicit WriteBitcodePass(raw_ostream &o, bool ShouldPreserveUseListOrder)
: ModulePass(ID), OS(o),
ShouldPreserveUseListOrder(ShouldPreserveUseListOrder) {}
const char *getPassName() const override { return "Bitcode Writer"; }
bool runOnModule(Module &M) override {
WriteBitcodeToFile(&M, OS, shouldPreserveBitcodeUseListOrder());
WriteBitcodeToFile(&M, OS, ShouldPreserveUseListOrder);
return false;
}
};
@ -43,6 +46,7 @@ namespace {
char WriteBitcodePass::ID = 0;
ModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str) {
return new WriteBitcodePass(Str);
ModulePass *llvm::createBitcodeWriterPass(raw_ostream &Str,
bool ShouldPreserveUseListOrder) {
return new WriteBitcodePass(Str, ShouldPreserveUseListOrder);
}