Reapply "[PGO] Fix name encoding for ObjC-like functions"
authorVedant Kumar <vsk@apple.com>
Mon, 28 Mar 2016 20:12:07 +0000 (20:12 +0000)
committerVedant Kumar <vsk@apple.com>
Mon, 28 Mar 2016 20:12:07 +0000 (20:12 +0000)
commitf20b6cec1c50d624fb5fb6a9003407be6e9f1bad
tree72f1570255b05eba3bbcaac3faaf05b41c4b89f4
parent0d026d9e9eb4fa1695dc94be43f02579f59bc696
Reapply "[PGO] Fix name encoding for ObjC-like functions"

Function names in ObjC can have spaces in them. This interacts poorly
with name compression, which uses spaces to separate PGO names. Fix the
issue by using a different separator and update a test.

I chose "\01" as the separator because 1) it's non-printable, 2) we
strip it from PGO names, and 3) it's the next natural choice once "\00"
is discarded (that one's overloaded).

This reverts the revert commit beaf3d18. What's changed?

- I fixed up the covmap-V2 binary format tests using a linux VM.
- I updated the expected counts in instrprof-comdat.h to account for
  the fact that there have been bugfixes to clang coverage.
- I added an assert to make sure we don't get bitten by this again.

Differential Revision: http://reviews.llvm.org/D18516

llvm-svn: 264641
12 files changed:
llvm/include/llvm/ProfileData/InstrProf.h
llvm/lib/ProfileData/InstrProf.cpp
llvm/test/tools/llvm-cov/Inputs/binary-formats.v2.linux32l
llvm/test/tools/llvm-cov/Inputs/binary-formats.v2.linux64l
llvm/test/tools/llvm-cov/Inputs/elf_binary_comdat.profdata
llvm/test/tools/llvm-cov/Inputs/instrprof-comdat.h
llvm/test/tools/llvm-profdata/Inputs/c-general.profraw
llvm/test/tools/llvm-profdata/raw-32-bits-be.test
llvm/test/tools/llvm-profdata/raw-32-bits-le.test
llvm/test/tools/llvm-profdata/raw-64-bits-be.test
llvm/test/tools/llvm-profdata/raw-64-bits-le.test
llvm/unittests/ProfileData/InstrProfTest.cpp