[SampleFDO][NFC] Refactor SampleProfileLoader to reuse in CodeGen

Authored by xur on Feb 9 2021, 7:43 PM.


[SampleFDO][NFC] Refactor SampleProfileLoader to reuse in CodeGen

Break SampleProfileLoader into to a base and a derived class.
Base class (SampleProfileLoaderBaseImpl) includes the common
code for IR and MachineIR (CodeGen) sample loader.
It will be templatelized in the later patch.

Inline and Probe related code will remain in the derived class of
SampleProfileLoader and stays in SampleProfile.cpp.

We need to refactor some functions:
(1) getInstWeight() to enable the code sharing -- put the core into
(2) emitAnnotation() and propagateWeights() to carve out the code
specific to SampleProfileLoader.
(3) make getInstWeight() and findFunctionSamples() virtual and override
in SampleProfileLoader as they need to access the fields in the derived

Differential Revision: https://reviews.llvm.org/D95832