From: Ian Lance Taylor Date: Thu, 10 Nov 2022 00:05:08 +0000 (-0800) Subject: go: don't crash if __atomic_fetch_add functions are used X-Git-Tag: basepoints/gcc-14~3339 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=219f82070903625d6bd8865b5ecb5f944bcee871;p=thirdparty%2Fgcc.git go: don't crash if __atomic_fetch_add functions are used The Go frontend only generates __atomic_add_fetch, but in some cases thost calls become __atomic_fetch_add. Patch originally by Marc Poulhiès. PR target/107581 * go-gcc.cc (Gcc_backend::Gcc_backend): Define __atomic_fetch_add_{4,8}. --- diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc index 1ba7206caeba..6e5887aecab3 100644 --- a/gcc/go/go-gcc.cc +++ b/gcc/go/go-gcc.cc @@ -886,16 +886,20 @@ Gcc_backend::Gcc_backend() uint32_type_node, integer_type_node, NULL_TREE); - this->define_builtin(BUILT_IN_ATOMIC_ADD_FETCH_4, "__atomic_add_fetch_4", NULL, - t, 0); + this->define_builtin(BUILT_IN_ATOMIC_ADD_FETCH_4, "__atomic_add_fetch_4", + NULL, t, 0); + this->define_builtin(BUILT_IN_ATOMIC_FETCH_ADD_4, "__atomic_fetch_add_4", + NULL, t, 0); t = build_function_type_list(uint64_type_node, ptr_type_node, uint64_type_node, integer_type_node, NULL_TREE); - this->define_builtin(BUILT_IN_ATOMIC_ADD_FETCH_8, "__atomic_add_fetch_8", NULL, - t, 0); + this->define_builtin(BUILT_IN_ATOMIC_ADD_FETCH_8, "__atomic_add_fetch_8", + NULL, t, 0); + this->define_builtin(BUILT_IN_ATOMIC_FETCH_ADD_8, "__atomic_fetch_add_8", + NULL, t, 0); t = build_function_type_list(unsigned_char_type_node, ptr_type_node,