In r250574, a template file is introduced to be a centralized place to define core PGO data structures that are shared between runtime, reader, and writer. In this patch, the file is used to replace 'hard' coded definitions so that they can always be in sync. Changes in the future will only (mostly) need to touch one file only (the template file).
A couple of notes:
- clang FE change to use the the template file (will be in a different patch)
- find a way to share header files between LLVM compiler and compiler_rt.
- more portable way to specify packed struct.