diff options
Diffstat (limited to 'lib/Bytecode/Reader')
-rw-r--r-- | lib/Bytecode/Reader/Analyzer.cpp | 8 | ||||
-rw-r--r-- | lib/Bytecode/Reader/AnalyzerWrappers.cpp | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/lib/Bytecode/Reader/Analyzer.cpp b/lib/Bytecode/Reader/Analyzer.cpp index d8e75957bb..94680949cb 100644 --- a/lib/Bytecode/Reader/Analyzer.cpp +++ b/lib/Bytecode/Reader/Analyzer.cpp @@ -52,6 +52,8 @@ public: bca.fileDensity = 0.0; bca.globalsDensity = 0.0; bca.functionDensity = 0.0; + bca.instructionSize = 0; + bca.longInstructions = 0; bca.vbrCount32 = 0; bca.vbrCount64 = 0; bca.vbrCompBytes = 0; @@ -167,6 +169,8 @@ public: currFunc->numPhis = 0; currFunc->numOperands = 0; currFunc->density = 0.0; + currFunc->instructionSize = 0; + currFunc->longInstructions = 0; currFunc->vbrCount32 = 0; currFunc->vbrCount64 = 0; currFunc->vbrCompBytes = 0; @@ -188,9 +192,13 @@ public: std::vector<unsigned>& Operands, unsigned Size) { bca.numInstructions++; bca.numValues++; + bca.instructionSize += Size; + if (Size > 4 ) bca.longInstructions++; bca.numOperands += Operands.size(); if ( currFunc ) { currFunc->numInstructions++; + currFunc->instructionSize += Size; + if (Size > 4 ) currFunc->longInstructions++; if ( Opcode == Instruction::PHI ) currFunc->numPhis++; } return Instruction::isTerminator(Opcode); diff --git a/lib/Bytecode/Reader/AnalyzerWrappers.cpp b/lib/Bytecode/Reader/AnalyzerWrappers.cpp index 9591dce6fb..f8493170fa 100644 --- a/lib/Bytecode/Reader/AnalyzerWrappers.cpp +++ b/lib/Bytecode/Reader/AnalyzerWrappers.cpp @@ -249,6 +249,10 @@ void llvm::PrintBytecodeAnalysis(BytecodeAnalysis& bca, std::ostream& Out ) print(Out, "Number Of Operands", bca.numOperands); print(Out, "Number Of Compaction Tables", bca.numCmpctnTables); print(Out, "Number Of Symbol Tables", bca.numSymTab); + print(Out, "Long Instructions", bca.longInstructions); + print(Out, "Instruction Size", bca.instructionSize); + print(Out, "Average Instruction Size", + double(bca.instructionSize)/double(bca.numInstructions)); print(Out, "Maximum Type Slot Number", bca.maxTypeSlot); print(Out, "Maximum Value Slot Number", bca.maxValueSlot); print(Out, "Bytes Thrown To Alignment", double(bca.numAlignment), @@ -304,6 +308,10 @@ void llvm::PrintBytecodeAnalysis(BytecodeAnalysis& bca, std::ostream& Out ) print(Out, "Type:", I->second.description); print(Out, "Byte Size", I->second.byteSize); print(Out, "Instructions", I->second.numInstructions); + print(Out, "Long Instructions", I->second.longInstructions); + print(Out, "Instruction Size", I->second.instructionSize); + print(Out, "Average Instruction Size", + double(I->second.instructionSize)/double(I->second.numInstructions)); print(Out, "Basic Blocks", I->second.numBasicBlocks); print(Out, "Operand", I->second.numOperands); print(Out, "Function Density", I->second.density); |