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}.
This commit is contained in:
Ian Lance Taylor 2022-11-09 16:05:08 -08:00
parent 965ce1ba39
commit 219f820709

View file

@ -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,