Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(436)

Side by Side Diff: tools/pnacl-bcanalyzer/pnacl-bcanalyzer.cpp

Issue 14813032: Make abbreviations explicit in pnacl-freeze/thaw. (Closed) Base URL: http://git.chromium.org/native_client/pnacl-llvm.git@master
Patch Set: Fix typos in CL Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 //===-- pnacl-bcanalyzer.cpp - Bitcode Analyzer -------------------------===// 1 //===-- pnacl-bcanalyzer.cpp - Bitcode Analyzer -------------------------===//
2 // 2 //
3 // The LLVM Compiler Infrastructure 3 // The LLVM Compiler Infrastructure
4 // 4 //
5 // This file is distributed under the University of Illinois Open Source 5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details. 6 // License. See LICENSE.TXT for details.
7 // 7 //
8 //===----------------------------------------------------------------------===// 8 //===----------------------------------------------------------------------===//
9 // 9 //
10 // This tool may be invoked in the following manner: 10 // This tool may be invoked in the following manner:
(...skipping 27 matching lines...) Expand all
38 #include "llvm/Support/ManagedStatic.h" 38 #include "llvm/Support/ManagedStatic.h"
39 #include "llvm/Support/MemoryBuffer.h" 39 #include "llvm/Support/MemoryBuffer.h"
40 #include "llvm/Support/PrettyStackTrace.h" 40 #include "llvm/Support/PrettyStackTrace.h"
41 #include "llvm/Support/Signals.h" 41 #include "llvm/Support/Signals.h"
42 #include "llvm/Support/raw_ostream.h" 42 #include "llvm/Support/raw_ostream.h"
43 #include "llvm/Support/system_error.h" 43 #include "llvm/Support/system_error.h"
44 #include <algorithm> 44 #include <algorithm>
45 #include <map> 45 #include <map>
46 using namespace llvm; 46 using namespace llvm;
47 47
48 /* To turn on debugging for this file, change value of NACL_DEBUGGING to 1.
49 */
50 #define NACL_DEBUGGING 0
51 #include "llvm/Bitcode/NaCl/NaClDebugging.h"
52
48 static cl::opt<std::string> 53 static cl::opt<std::string>
49 InputFilename(cl::Positional, cl::desc("<input bitcode>"), cl::init("-")); 54 InputFilename(cl::Positional, cl::desc("<input bitcode>"), cl::init("-"));
50 55
51 static cl::opt<bool> Dump("dump", cl::desc("Dump low level bitcode trace")); 56 static cl::opt<bool> Dump("dump", cl::desc("Dump low level bitcode trace"));
52 57
53 //===----------------------------------------------------------------------===// 58 //===----------------------------------------------------------------------===//
54 // Bitcode specific analysis. 59 // Bitcode specific analysis.
55 //===----------------------------------------------------------------------===// 60 //===----------------------------------------------------------------------===//
56 61
57 static cl::opt<bool> NoHistogram("disable-histogram", 62 static cl::opt<bool> NoHistogram("disable-histogram",
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 /// good place to breakpoint if debugging. 323 /// good place to breakpoint if debugging.
319 static bool Error(const std::string &Err) { 324 static bool Error(const std::string &Err) {
320 errs() << Err << "\n"; 325 errs() << Err << "\n";
321 return true; 326 return true;
322 } 327 }
323 328
324 /// ParseBlock - Read a block, updating statistics, etc. 329 /// ParseBlock - Read a block, updating statistics, etc.
325 static bool ParseBlock(NaClBitstreamCursor &Stream, unsigned BlockID, 330 static bool ParseBlock(NaClBitstreamCursor &Stream, unsigned BlockID,
326 unsigned IndentLevel) { 331 unsigned IndentLevel) {
327 std::string Indent(IndentLevel*2, ' '); 332 std::string Indent(IndentLevel*2, ' ');
333 NACL_DEBUG(outs() << Indent << "-> ParseBlock(" << BlockID << ")\n");
jvoung (off chromium) 2013/05/14 23:47:14 Not sure you want to use "outs()" since that will
Karl 2013/05/17 20:52:18 Fixing to use llvm debug.h
328 uint64_t BlockBitStart = Stream.GetCurrentBitNo(); 334 uint64_t BlockBitStart = Stream.GetCurrentBitNo();
329 335
330 // Get the statistics for this BlockID. 336 // Get the statistics for this BlockID.
331 PerBlockIDStats &BlockStats = BlockIDStats[BlockID]; 337 PerBlockIDStats &BlockStats = BlockIDStats[BlockID];
332 338
333 BlockStats.NumInstances++; 339 BlockStats.NumInstances++;
334 340
335 // BLOCKINFO is a special part of the stream. 341 // BLOCKINFO is a special part of the stream.
336 if (BlockID == naclbitc::BLOCKINFO_BLOCK_ID) { 342 if (BlockID == naclbitc::BLOCKINFO_BLOCK_ID) {
337 if (Dump) outs() << Indent << "<BLOCKINFO_BLOCK/>\n"; 343 if (Dump) outs() << Indent << "<BLOCKINFO_BLOCK/>\n";
338 if (Stream.ReadBlockInfoBlock()) 344 if (Stream.ReadBlockInfoBlock())
339 return Error("Malformed BlockInfoBlock"); 345 return Error("Malformed BlockInfoBlock");
340 uint64_t BlockBitEnd = Stream.GetCurrentBitNo(); 346 uint64_t BlockBitEnd = Stream.GetCurrentBitNo();
341 BlockStats.NumBits += BlockBitEnd-BlockBitStart; 347 BlockStats.NumBits += BlockBitEnd-BlockBitStart;
348 NACL_DEBUG(outs() << Indent << "<- ParseBlock\n");
342 return false; 349 return false;
343 } 350 }
344 351
345 unsigned NumWords = 0; 352 unsigned NumWords = 0;
346 if (Stream.EnterSubBlock(BlockID, &NumWords)) 353 if (Stream.EnterSubBlock(BlockID, &NumWords))
347 return Error("Malformed block record"); 354 return Error("Malformed block record");
348 355
349 const char *BlockName = 0; 356 const char *BlockName = 0;
350 if (Dump) { 357 if (Dump) {
351 outs() << Indent << "<"; 358 outs() << Indent << "<";
(...skipping 27 matching lines...) Expand all
379 case NaClBitstreamEntry::EndBlock: { 386 case NaClBitstreamEntry::EndBlock: {
380 uint64_t BlockBitEnd = Stream.GetCurrentBitNo(); 387 uint64_t BlockBitEnd = Stream.GetCurrentBitNo();
381 BlockStats.NumBits += BlockBitEnd-BlockBitStart; 388 BlockStats.NumBits += BlockBitEnd-BlockBitStart;
382 if (Dump) { 389 if (Dump) {
383 outs() << Indent << "</"; 390 outs() << Indent << "</";
384 if (BlockName) 391 if (BlockName)
385 outs() << BlockName << ">\n"; 392 outs() << BlockName << ">\n";
386 else 393 else
387 outs() << "UnknownBlock" << BlockID << ">\n"; 394 outs() << "UnknownBlock" << BlockID << ">\n";
388 } 395 }
396 NACL_DEBUG(outs() << Indent << "<- ParseBlock\n");
389 return false; 397 return false;
390 } 398 }
391 399
392 case NaClBitstreamEntry::SubBlock: { 400 case NaClBitstreamEntry::SubBlock: {
393 uint64_t SubBlockBitStart = Stream.GetCurrentBitNo(); 401 uint64_t SubBlockBitStart = Stream.GetCurrentBitNo();
394 if (ParseBlock(Stream, Entry.ID, IndentLevel+1)) 402 if (ParseBlock(Stream, Entry.ID, IndentLevel+1))
395 return true; 403 return true;
396 ++BlockStats.NumSubBlocks; 404 ++BlockStats.NumSubBlocks;
397 uint64_t SubBlockBitEnd = Stream.GetCurrentBitNo(); 405 uint64_t SubBlockBitEnd = Stream.GetCurrentBitNo();
398 406
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 outs() << format("%.2f/%.2fB/%luW", Bits, Bits/8,(unsigned long)(Bits/32)); 479 outs() << format("%.2f/%.2fB/%luW", Bits, Bits/8,(unsigned long)(Bits/32));
472 } 480 }
473 static void PrintSize(uint64_t Bits) { 481 static void PrintSize(uint64_t Bits) {
474 outs() << format("%lub/%.2fB/%luW", (unsigned long)Bits, 482 outs() << format("%lub/%.2fB/%luW", (unsigned long)Bits,
475 (double)Bits/8, (unsigned long)(Bits/32)); 483 (double)Bits/8, (unsigned long)(Bits/32));
476 } 484 }
477 485
478 486
479 /// AnalyzeBitcode - Analyze the bitcode file specified by InputFilename. 487 /// AnalyzeBitcode - Analyze the bitcode file specified by InputFilename.
480 static int AnalyzeBitcode() { 488 static int AnalyzeBitcode() {
489 NACL_DEBUG(outs() << "-> AnalyzeBitcode\n");
481 // Read the input file. 490 // Read the input file.
482 OwningPtr<MemoryBuffer> MemBuf; 491 OwningPtr<MemoryBuffer> MemBuf;
483 492
484 if (error_code ec = 493 if (error_code ec =
485 MemoryBuffer::getFileOrSTDIN(InputFilename.c_str(), MemBuf)) 494 MemoryBuffer::getFileOrSTDIN(InputFilename.c_str(), MemBuf))
486 return Error("Error reading '" + InputFilename + "': " + ec.message()); 495 return Error("Error reading '" + InputFilename + "': " + ec.message());
487 496
488 if (MemBuf->getBufferSize() & 3) 497 if (MemBuf->getBufferSize() & 3)
489 return Error("Bitcode stream should be a multiple of 4 bytes in length"); 498 return Error("Bitcode stream should be a multiple of 4 bytes in length");
490 499
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
613 if (const char *CodeName = 622 if (const char *CodeName =
614 GetCodeName(FreqPairs[i].second, I->first, StreamFile)) 623 GetCodeName(FreqPairs[i].second, I->first, StreamFile))
615 outs() << CodeName << "\n"; 624 outs() << CodeName << "\n";
616 else 625 else
617 outs() << "UnknownCode" << FreqPairs[i].second << "\n"; 626 outs() << "UnknownCode" << FreqPairs[i].second << "\n";
618 } 627 }
619 outs() << "\n"; 628 outs() << "\n";
620 629
621 } 630 }
622 } 631 }
632 NACL_DEBUG(outs() << "<- AnalyzeBitcode\n");
623 return 0; 633 return 0;
624 } 634 }
625 635
626 636
627 int main(int argc, char **argv) { 637 int main(int argc, char **argv) {
628 // Print a stack trace if we signal out. 638 // Print a stack trace if we signal out.
629 sys::PrintStackTraceOnErrorSignal(); 639 sys::PrintStackTraceOnErrorSignal();
630 PrettyStackTraceProgram X(argc, argv); 640 PrettyStackTraceProgram X(argc, argv);
631 llvm_shutdown_obj Y; // Call llvm_shutdown() on exit. 641 llvm_shutdown_obj Y; // Call llvm_shutdown() on exit.
632 cl::ParseCommandLineOptions(argc, argv, "pnacl-bcanalyzer file analyzer\n"); 642 cl::ParseCommandLineOptions(argc, argv, "pnacl-bcanalyzer file analyzer\n");
633 643
634 return AnalyzeBitcode(); 644 return AnalyzeBitcode();
635 } 645 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698