Reapply (2x) "[PGO] Fix name encoding for ObjC-like functions"
authorVedant Kumar <vsk@apple.com>
Mon, 28 Mar 2016 21:06:42 +0000 (21:06 +0000)
committerVedant Kumar <vsk@apple.com>
Mon, 28 Mar 2016 21:06:42 +0000 (21:06 +0000)
commit86705ba5b1bd0c60556abcd7e05f52d6e84f5dc1
tree746a4bfe06225e8ee25054eb35feb914774195c7
parentfaebbb053d4971a68d10df9a4f3d5db5aeed0afd
Reapply (2x) "[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).

What's changed since the original commit?

- I fixed up the covmap-V2 binary format tests using a linux VM.
- I weakened the CHECK lines in instrprof-comdat.h to account for the
  fact that there have been bugfixes to clang coverage. These will be
  fixed up in a follow-up.
- I added an assert to make sure we don't get bitten by this again.
- I constructed the c-general.profraw file without name compression
  enabled to appease some bots.

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

llvm-svn: 264658
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