https://sourceware.org/bugzilla/show_bug.cgi?id=30967
--- Comment #14 from Aleksei Vetrov <vvvvvv at google dot com> --- Here are investigation results on why this happens in LLVM. It is a new algorithm for assigning "hierarchical discriminator for FSAFDO". >From https://reviews.llvm.org/D102246: #define BASE_DIS_BIT_BEG 0 #define BASE_DIS_BIT_END 7 #define PASS_1_DIS_BIT_BEG 8 #define PASS_1_DIS_BIT_END 13 #define PASS_2_DIS_BIT_BEG 14 #define PASS_2_DIS_BIT_END 19 #define PASS_3_DIS_BIT_BEG 20 #define PASS_3_DIS_BIT_END 25 #define PASS_LAST_DIS_BIT_BEG 26 #define PASS_LAST_DIS_BIT_END 31 unsigned DiscriminatorCurrPass; DiscriminatorCurrPass = R.second ? ++LDCM[LD] : LDCM[LD]; DiscriminatorCurrPass = DiscriminatorCurrPass << LowBit; // LowBit is 26, this guarantees a big discriminator ^ DiscriminatorCurrPass += getCallStackHash(BB, I, DIL); DiscriminatorCurrPass &= BitMaskThisPass; unsigned NewD = Discriminator | DiscriminatorCurrPass; const auto *const NewDIL = DIL->cloneWithDiscriminator(NewD); FS discriminator seems to deliberately use bit 26-31 to add fields for its pass. So this big discriminator is caused by `-enable-fs-discriminator=true`. The good news is this will not increase discriminators to bigger than UINT_MAX. -- You are receiving this mail because: You are on the CC list for the bug.