Hi!

On 2023-12-23T10:17:57+0100, I wrote:
> On 2023-12-21T13:58:23+0100, Jakub Jelinek <ja...@redhat.com> wrote:
>> On Thu, Dec 21, 2023 at 01:31:19PM +0100, Thomas Schwinge wrote:
>>> OK to push, for a start, the attached
>>> "GCN, nvptx: Basic '__cxa_guard_{acquire,abort,release}' for C++ static 
>>> local variables support"?
>>> That's now in libgcc not libgomp, so that it's also usable for GCN, nvptx
>>> target testing, where we thus see a number of FAIL -> PASS progressions.
>>
>>> For now, for single-threaded GCN, nvptx target use only; extension for
>>> multi-threaded offloading use to follow later.
>>>
>>>      libgcc/
>>>      * c++-minimal/README: New.
>>>      * c++-minimal/guard.c: New.
>>>      * config/gcn/t-amdgcn (LIB2ADD): Add it.
>>>      * config/nvptx/t-nvptx (LIB2ADD): Likewise.

>> [...] LGTM, but hope that one day we'll get rid of it again.
>
> Yep.

..., and here we are; GCN, nvptx now has libstdc++-v3/libsupc++ proper.

> Pushed to master branch commit c0bf7ea189ecf252152fe15134f70f576bcd20b2
> "GCN, nvptx: Basic '__cxa_guard_{acquire,abort,release}' for C++ static local 
> variables support",
> see attached.

Pushed to trunk branch commit fad9d58e057e5f976cacdca90e2519ed5f0990ad
'Revert "GCN, nvptx: Basic '__cxa_guard_{acquire,abort,release}' for C++ static 
local variables support"',
see attached.


Grüße
 Thomas


>From fad9d58e057e5f976cacdca90e2519ed5f0990ad Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <tho...@codesourcery.com>
Date: Sat, 23 Dec 2023 11:01:08 +0100
Subject: [PATCH] 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.
---
 libgcc/c++-minimal/README   |  2 -
 libgcc/c++-minimal/guard.c  | 97 -------------------------------------
 libgcc/config/gcn/t-amdgcn  |  3 --
 libgcc/config/nvptx/t-nvptx |  3 --
 4 files changed, 105 deletions(-)
 delete mode 100644 libgcc/c++-minimal/README
 delete mode 100644 libgcc/c++-minimal/guard.c

diff --git a/libgcc/c++-minimal/README b/libgcc/c++-minimal/README
deleted file mode 100644
index 832f1265f7e..00000000000
--- 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 98ac288c794..00000000000
--- 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-2025 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 b00adc72bad..d1d9a4f92b5 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 1ff574c2982..f295898d69f 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=
 
-- 
2.34.1

Reply via email to