Issue with the function hash used as PGO index

Hi Folks,

This review

    ⚙ D79961 [PGO] Fix computation of fuction Hash

fixes a relatively serious bug in the computation of the function hash used to
compute index in profile files in clang. Basically the bug was allowing trivial
hash collision of two function that only differ by their last statement(s). This
could lead to segfaukts like this one [1].

I'm happy with the patch (if you want to review it, please jump in) but I'm also
worried that it changes the hash of *most* functions, thus invalidating all
profile files generated with previous clang revision.

So if it lands, people will find themselves with a lot of obsolete profile data
that need to be regenerated... I think I'd at least state that clearly on the
mlist, due to the potential large impact.

- Serge

[1] 1827282 – clang crashes building .net core (pgo)

FYI, there is also IR PGO that computes function hash using CFG. To turn it on, use -fprofile-generate and -fprofile-use options.