https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103194
--- Comment #17 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to David Binderman from comment #0) > For this C code: > > long pscc_a_2_3; > int pscc_a_1_4; > void pscc() > { > pscc_a_1_4 = __sync_fetch_and_and(&pscc_a_2_3, 1); > } > > compiled by recent gcc trunk, does this: > > $ /home/dcb/gcc/results/bin/gcc -c -O1 bug771.c > during GIMPLE pass: fab > bug771.c: In function ‘pscc’: > bug771.c:3:6: internal compiler error: in optimize_atomic_bit_test_and, at > tree-ssa-ccp.c:3626 > 3 | void pscc() > | ^~~~ > 0xee6020 optimize_atomic_bit_test_and(gimple_stmt_iterator*, internal_fn, > bool, bool) > ../../trunk.git/gcc/tree-ssa-ccp.c:3626 > 0xee389a (anonymous namespace)::pass_fold_builtins::execute(function*) > ../../trunk.git/gcc/tree-ssa-ccp.c:0 > > The bug first seems to occur sometime between git hash f2572a398d21fd52 > and a97fdde627e64202,a distance of some 60 commits. > > In that range, commit fb161782545224f55ba26ba663889c5e6e9a04d1 > looks a likely candidate. This is fixed by r12-5290. But we should fix the missed optimization.