diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-07-25 14:49:26 +0000 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2014-07-25 14:49:26 +0000 |
commit | 6b6fdc992a826f66c1eb3b1e2a08220e29042891 (patch) | |
tree | cdab3c206a971a0920102a070a1811a169ea6b54 /llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | |
parent | 115d2df8a4406959fd0b62b205611bb75773aab3 (diff) | |
download | bcm5719-llvm-6b6fdc992a826f66c1eb3b1e2a08220e29042891.tar.gz bcm5719-llvm-6b6fdc992a826f66c1eb3b1e2a08220e29042891.zip |
IPO: Add use-list-order verifier
Add a -verify-use-list-order pass, which shuffles use-list order, writes
to bitcode, reads back, and verifies that the (shuffled) order matches.
- The utility functions live in lib/IR/UseListOrder.cpp.
- Moved (and renamed) the command-line option to enable writing
use-lists, so that this pass can return early if the use-list orders
aren't being serialized.
It's not clear that this pass is the right direction long-term (perhaps
a separate tool instead?), but short-term it's a great way to test the
use-list order prototype. I've added an XFAIL-ed testcase that I'm
hoping to get working pretty quickly.
This is part of PR5680.
llvm-svn: 213945
Diffstat (limited to 'llvm/lib/Bitcode/Writer/BitcodeWriter.cpp')
-rw-r--r-- | llvm/lib/Bitcode/Writer/BitcodeWriter.cpp | 9 |
1 files changed, 2 insertions, 7 deletions
diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index b2e49486d70..cb3f42b071c 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -22,6 +22,7 @@ #include "llvm/IR/Instructions.h" #include "llvm/IR/Module.h" #include "llvm/IR/Operator.h" +#include "llvm/IR/UseListOrder.h" #include "llvm/IR/ValueSymbolTable.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/ErrorHandling.h" @@ -32,12 +33,6 @@ #include <map> using namespace llvm; -static cl::opt<bool> -EnablePreserveUseListOrdering("enable-bc-uselist-preserve", - cl::desc("Turn on experimental support for " - "use-list order preservation."), - cl::init(false), cl::Hidden); - /// These are manifest constants used by the bitcode writer. They do not need to /// be kept in sync with the reader, but need to be consistent within this file. enum { @@ -1975,7 +1970,7 @@ static void WriteModule(const Module *M, BitstreamWriter &Stream) { WriteValueSymbolTable(M->getValueSymbolTable(), VE, Stream); // Emit use-lists. - if (EnablePreserveUseListOrdering) + if (shouldPreserveBitcodeUseListOrder()) WriteModuleUseLists(M, VE, Stream); // Emit function bodies. |