PGO: fix a bug in parsing pgo data.
authorManman Ren <manman.ren@gmail.com>
Sat, 15 Feb 2014 01:29:02 +0000 (01:29 +0000)
committerManman Ren <manman.ren@gmail.com>
Sat, 15 Feb 2014 01:29:02 +0000 (01:29 +0000)
When a function has a single counter, we will offset the pointer by 1 when
parsing the next function. If a function has multiple counters, we are
okay after skipping rest of the counters.

llvm-svn: 201456

clang/lib/CodeGen/CodeGenPGO.cpp
clang/test/CodeGen/Inputs/instr-profile.pgodata

index d7c4709..5475342 100644 (file)
@@ -72,7 +72,7 @@ PGOProfileData::PGOProfileData(CodeGenModule &CGM, std::string Path)
       ReportBadPGOData(CGM, "pgo-data file has bad count value");
       return;
     }
-    CurPtr = EndPtr + 1;
+    CurPtr = EndPtr; // Point to '\n'.
     FunctionCounts[MangledName] = Count;
     MaxCount = Count > MaxCount ? Count : MaxCount;
 
index 578a6d2..0eaea30 100644 (file)
@@ -116,6 +116,9 @@ big_switch 19
 2
 2
 
+issue_with_one_counter 1
+0
+
 boolean_operators 10
 1
 100