diff options
author | Ian Lance Taylor <iant@golang.org> | 2022-11-09 16:05:08 -0800 |
---|---|---|
committer | Ian Lance Taylor <iant@golang.org> | 2022-11-09 16:06:10 -0800 |
commit | 219f82070903625d6bd8865b5ecb5f944bcee871 (patch) | |
tree | 31a72eaee329ef95b25e879fe9fa2405cf481fcf /gcc | |
parent | 965ce1ba392ca03c746cabb9ba73e66258557dcb (diff) | |
download | gcc-219f82070903625d6bd8865b5ecb5f944bcee871.zip gcc-219f82070903625d6bd8865b5ecb5f944bcee871.tar.gz gcc-219f82070903625d6bd8865b5ecb5f944bcee871.tar.bz2 |
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}.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/go/go-gcc.cc | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc index 1ba7206..6e5887a 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, |