X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=lib%2FProfileData%2FSampleProfReader.cpp;h=d184969e046c8feda1a315a1cb6fe5be961b562f;hp=1ea7d2a0c4b5f295ac39560efd0844fd80d6ac27;hb=9dc572f568d55568174020218d3b939c1ba8d102;hpb=d433cde1a1f80974d35284fc47b7dc3a6c5f6684;ds=sidebyside diff --git a/lib/ProfileData/SampleProfReader.cpp b/lib/ProfileData/SampleProfReader.cpp index 1ea7d2a0c4b..d184969e046 100644 --- a/lib/ProfileData/SampleProfReader.cpp +++ b/lib/ProfileData/SampleProfReader.cpp @@ -21,13 +21,13 @@ //===----------------------------------------------------------------------===// #include "llvm/ProfileData/SampleProfReader.h" +#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/SmallVector.h" #include "llvm/Support/Debug.h" #include "llvm/Support/ErrorOr.h" #include "llvm/Support/LEB128.h" #include "llvm/Support/LineIterator.h" #include "llvm/Support/MemoryBuffer.h" -#include "llvm/ADT/DenseMap.h" -#include "llvm/ADT/SmallVector.h" using namespace llvm::sampleprof; using namespace llvm; @@ -293,15 +293,10 @@ ErrorOr SampleProfileReaderBinary::readStringFromTable() { std::error_code SampleProfileReaderBinary::readProfile(FunctionSamples &FProfile) { - auto Val = readNumber(); - if (std::error_code EC = Val.getError()) + auto NumSamples = readNumber(); + if (std::error_code EC = NumSamples.getError()) return EC; - FProfile.addTotalSamples(*Val); - - Val = readNumber(); - if (std::error_code EC = Val.getError()) - return EC; - FProfile.addHeadSamples(*Val); + FProfile.addTotalSamples(*NumSamples); // Read the samples in the body. auto NumRecords = readNumber(); @@ -370,6 +365,10 @@ SampleProfileReaderBinary::readProfile(FunctionSamples &FProfile) { std::error_code SampleProfileReaderBinary::read() { while (!at_eof()) { + auto NumHeadSamples = readNumber(); + if (std::error_code EC = NumHeadSamples.getError()) + return EC; + auto FName(readStringFromTable()); if (std::error_code EC = FName.getError()) return EC; @@ -377,6 +376,8 @@ std::error_code SampleProfileReaderBinary::read() { Profiles[*FName] = FunctionSamples(); FunctionSamples &FProfile = Profiles[*FName]; + FProfile.addHeadSamples(*NumHeadSamples); + if (std::error_code EC = readProfile(FProfile)) return EC; }