summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-lto2
diff options
context:
space:
mode:
authorPeter Collingbourne <peter@pcc.me.uk>2017-06-27 23:50:24 +0000
committerPeter Collingbourne <peter@pcc.me.uk>2017-06-27 23:50:24 +0000
commit99b98c21f2d479e82a7eccf46825c75b43619bf8 (patch)
tree2c2f10af9cab5c0db32c9173513862102076b81f /llvm/tools/llvm-lto2
parent92648c25a451bbb547ea22a88481bef9526d727b (diff)
downloadbcm5719-llvm-99b98c21f2d479e82a7eccf46825c75b43619bf8.tar.gz
bcm5719-llvm-99b98c21f2d479e82a7eccf46825c75b43619bf8.zip
Object: Teach irsymtab::read() to try to use the irsymtab that we wrote to disk.
Fixes PR27551. Differential Revision: https://reviews.llvm.org/D33974 llvm-svn: 306488
Diffstat (limited to 'llvm/tools/llvm-lto2')
-rw-r--r--llvm/tools/llvm-lto2/llvm-lto2.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/llvm/tools/llvm-lto2/llvm-lto2.cpp b/llvm/tools/llvm-lto2/llvm-lto2.cpp
index bbfece517c8..5426e040cd7 100644
--- a/llvm/tools/llvm-lto2/llvm-lto2.cpp
+++ b/llvm/tools/llvm-lto2/llvm-lto2.cpp
@@ -16,9 +16,10 @@
//
//===----------------------------------------------------------------------===//
-#include "llvm/LTO/Caching.h"
+#include "llvm/Bitcode/BitcodeReader.h"
#include "llvm/CodeGen/CommandFlags.h"
#include "llvm/IR/DiagnosticPrinter.h"
+#include "llvm/LTO/Caching.h"
#include "llvm/LTO/LTO.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/FileSystem.h"
@@ -298,6 +299,17 @@ static int run(int argc, char **argv) {
static int dumpSymtab(int argc, char **argv) {
for (StringRef F : make_range(argv + 1, argv + argc)) {
std::unique_ptr<MemoryBuffer> MB = check(MemoryBuffer::getFile(F), F);
+ BitcodeFileContents BFC = check(getBitcodeFileContents(*MB), F);
+
+ if (BFC.Symtab.size() >= sizeof(irsymtab::storage::Header)) {
+ auto *Hdr = reinterpret_cast<const irsymtab::storage::Header *>(
+ BFC.Symtab.data());
+ outs() << "version: " << Hdr->Version << '\n';
+ if (Hdr->Version == irsymtab::storage::Header::kCurrentVersion)
+ outs() << "producer: " << Hdr->Producer.get(BFC.StrtabForSymtab)
+ << '\n';
+ }
+
std::unique_ptr<InputFile> Input =
check(InputFile::create(MB->getMemBufferRef()), F);
OpenPOWER on IntegriCloud