Clang is generating different mangled names for the same lambda function in build that are
slightly different (like from non-related source/Macro change). This is due to the fact that clang uses a
cross-translation-unit sequential string "$_<n>" in lambda's mangled name. Here, "n" is the
AnonStructIds field in MangleContext.
Different mangled names for unchanged function is undesirable: it makes perf comparison harder,
and can cause some unnecessary profile mismatch in SampleFDO.
This patch changes AnonStructIds to a per-function based seq number if the
DeclContext is a function.
I hold the change for Microsoft mangling and only change Itanium mangling.