https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103194
Hongtao.liu <crazylht at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |jakub at gcc dot gnu.org
--- Comment #8 from Hongtao.liu <crazylht at gmail dot com> ---
unsigned long pscc_a_2_3;
int pscc_a_1_4;
unsigned long pc2;
void pscc(int n)
{
long mask = 1ll << n;
pc2 = __sync_fetch_and_or(&pscc_a_2_3, mask) & mask;
}
void pscc1(int n)
{
long mask = 1ll << 65;
pc2 = __sync_fetch_and_or(&pscc_a_2_3, mask) & mask;
}
pscc and pscc1 have different behavior when n >= 64, It seems unsafe to
optimize variable mask?