http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54006
--- Comment #2 from Hans-Peter Nilsson <hp at gcc dot gnu.org> 2012-07-20 04:06:41 UTC --- FWIW, cpp_atomic_builtins is called before the target TARGET_INIT_LIBFUNCS is called (at least on the 4.7 branch) so using can_compare_and_swap_p as the / in the common function (as is needed) requires moving some initialization bits to avoid a SEGV. There be dragons there. (Not that they shouldn't be slayed, just beware.)