https://gcc.gnu.org/g:59afee42c876336bac5114c3eab459e4bc5d8044
commit 59afee42c876336bac5114c3eab459e4bc5d8044 Author: Thomas Schwinge <tho...@codesourcery.com> Date: Sat Dec 23 11:01:08 2023 +0100 Revert "GCN, nvptx: Basic '__cxa_guard_{acquire,abort,release}' for C++ static local variables support" GCN, nvptx now has libstdc++-v3/libsupc++ proper. This reverts commit c0bf7ea189ecf252152fe15134f70f576bcd20b2. (cherry picked from commit fad9d58e057e5f976cacdca90e2519ed5f0990ad) Diff: --- libgcc/ChangeLog.omp | 10 +++++ libgcc/c++-minimal/README | 2 - libgcc/c++-minimal/guard.c | 97 --------------------------------------------- libgcc/config/gcn/t-amdgcn | 3 -- libgcc/config/nvptx/t-nvptx | 3 -- 5 files changed, 10 insertions(+), 105 deletions(-) diff --git a/libgcc/ChangeLog.omp b/libgcc/ChangeLog.omp index 62461642e5f3..13048963f015 100644 --- a/libgcc/ChangeLog.omp +++ b/libgcc/ChangeLog.omp @@ -1,3 +1,13 @@ +2025-03-19 Thomas Schwinge <tschwi...@baylibre.com> + + Revert: + 2023-12-23 Thomas Schwinge <tho...@codesourcery.com> + + * c++-minimal/README: New. + * c++-minimal/guard.c: New. + * config/gcn/t-amdgcn (LIB2ADD): Add it. + * config/nvptx/t-nvptx (LIB2ADD): Likewise. + 2024-06-05 Thomas Schwinge <tschwi...@baylibre.com> Andrew Stubbs <a...@gcc.gnu.org> diff --git a/libgcc/c++-minimal/README b/libgcc/c++-minimal/README deleted file mode 100644 index 832f1265f7e1..000000000000 --- a/libgcc/c++-minimal/README +++ /dev/null @@ -1,2 +0,0 @@ -Minimal hacked-up version of some C++ support for offload devices, until we -have libstdc++-v3/libsupc++ proper. diff --git a/libgcc/c++-minimal/guard.c b/libgcc/c++-minimal/guard.c deleted file mode 100644 index 02c67bc2de92..000000000000 --- a/libgcc/c++-minimal/guard.c +++ /dev/null @@ -1,97 +0,0 @@ -/* 'libstdc++-v3/libsupc++/guard.cc' for offload devices, until we have - libstdc++-v3/libsupc++ proper. - - Copyright (C) 2002-2024 Free Software Foundation, Inc. - -This file is part of GCC. - -GCC is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free -Software Foundation; either version 3, or (at your option) any later -version. - -GCC is distributed in the hope that it will be useful, but WITHOUT ANY -WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -for more details. - -Under Section 7 of GPL version 3, you are granted additional -permissions described in the GCC Runtime Library Exception, version -3.1, as published by the Free Software Foundation. - -You should have received a copy of the GNU General Public License and -a copy of the GCC Runtime Library Exception along with this program; -see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -<http://www.gnu.org/licenses/>. */ - -#if defined __AMDGCN__ -#elif defined __nvptx__ -#else -# error not ported -#endif - -#include "../../libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h" - -/* Copy'n'paste/edit from 'libstdc++-v3/libsupc++/cxxabi.h'. */ - -int -__cxa_guard_acquire(__guard*); - -void -__cxa_guard_release(__guard*); - -void -__cxa_guard_abort(__guard*); - -/* Copy'n'paste/edit from 'libstdc++-v3/libsupc++/guard.cc'. */ - -#undef _GLIBCXX_GUARD_TEST_AND_ACQUIRE -#undef _GLIBCXX_GUARD_SET_AND_RELEASE -#define _GLIBCXX_GUARD_SET_AND_RELEASE(G) _GLIBCXX_GUARD_SET (G) - -static inline int -init_in_progress_flag(__guard* g) -{ return ((char *)g)[1]; } - -static inline void -set_init_in_progress_flag(__guard* g, int v) -{ ((char *)g)[1] = v; } - -static inline void -throw_recursive_init_exception(void) -{ - // Use __builtin_trap so we don't require abort(). - __builtin_trap(); -} - -// acquire() is a helper function used to acquire guard if thread support is -// not compiled in or is compiled in but not enabled at run-time. -static int -acquire(__guard *g) -{ - // Quit if the object is already initialized. - if (_GLIBCXX_GUARD_TEST(g)) - return 0; - - if (init_in_progress_flag(g)) - throw_recursive_init_exception(); - - set_init_in_progress_flag(g, 1); - return 1; -} - -int __cxa_guard_acquire (__guard *g) -{ - return acquire (g); -} - -void __cxa_guard_abort (__guard *g) -{ - set_init_in_progress_flag(g, 0); -} - -void __cxa_guard_release (__guard *g) -{ - set_init_in_progress_flag(g, 0); - _GLIBCXX_GUARD_SET_AND_RELEASE (g); -} diff --git a/libgcc/config/gcn/t-amdgcn b/libgcc/config/gcn/t-amdgcn index b00adc72bad7..d1d9a4f92b52 100644 --- a/libgcc/config/gcn/t-amdgcn +++ b/libgcc/config/gcn/t-amdgcn @@ -8,9 +8,6 @@ LIB2ADD += $(srcdir)/config/gcn/atomic.c \ $(srcdir)/config/gcn/lib2-bswapti2.c \ $(srcdir)/config/gcn/unwind-gcn.c -# Until we have libstdc++-v3/libsupc++ proper. -LIB2ADD += $(srcdir)/c++-minimal/guard.c - LIB2ADDEH= LIB2FUNCS_EXCLUDE=__main diff --git a/libgcc/config/nvptx/t-nvptx b/libgcc/config/nvptx/t-nvptx index 1ff574c2982a..f295898d69fc 100644 --- a/libgcc/config/nvptx/t-nvptx +++ b/libgcc/config/nvptx/t-nvptx @@ -3,9 +3,6 @@ LIB2ADD=$(srcdir)/config/nvptx/reduction.c \ $(srcdir)/config/nvptx/atomic.c \ $(srcdir)/config/nvptx/unwind-nvptx.c -# Until we have libstdc++-v3/libsupc++ proper. -LIB2ADD += $(srcdir)/c++-minimal/guard.c - LIB2ADDEH= LIB2FUNCS_EXCLUDE=