https://gcc.gnu.org/g:04b42c4245d85f77aa54ec002ebd7bbe6fde5f11

commit r16-2369-g04b42c4245d85f77aa54ec002ebd7bbe6fde5f11
Author: Thomas Schwinge <tschwi...@baylibre.com>
Date:   Fri Jul 18 12:56:13 2025 +0200

    Adjust 'libgomp.c++/target-cdtor-{1,2}.C' for 
'targetm.cxx.use_aeabi_atexit' [PR119853, PR119854]
    
    Fix-up for commit aafe942227baf8c2bcd4cac2cb150e49a4b895a9
    "GCN, nvptx offloading: Host/device compatibility: Itanium C++ ABI, DSO 
Object Destruction API [PR119853, PR119854]":
    we need to adjust for 'targetm.cxx.use_aeabi_atexit':
    
        gcc/config/arm/arm.cc:#define TARGET_CXX_USE_AEABI_ATEXIT 
arm_cxx_use_aeabi_atexit
    
        gcc/config/arm/arm.cc:/* The EABI says __aeabi_atexit should be used to 
register static
        gcc/config/arm/arm.cc-   destructors.  */
        gcc/config/arm/arm.cc-
        gcc/config/arm/arm.cc-static bool
        gcc/config/arm/arm.cc:arm_cxx_use_aeabi_atexit (void)
        gcc/config/arm/arm.cc-{
        gcc/config/arm/arm.cc-  return TARGET_AAPCS_BASED;
        gcc/config/arm/arm.cc-}
    
    ..., which 'gcc/cp/decl.cc:get_atexit_node' then acts on: call 
'__aeabi_atexit'
    instead of '__cxa_atexit', and swap two arguments.
    
            PR target/119853
            PR target/119854
            libgomp/
            * testsuite/libgomp.c++/target-cdtor-1.C: Adjust for
            'targetm.cxx.use_aeabi_atexit'.
            * testsuite/libgomp.c++/target-cdtor-2.C: Likewise.

Diff:
---
 libgomp/testsuite/libgomp.c++/target-cdtor-1.C | 17 +++++++++++------
 libgomp/testsuite/libgomp.c++/target-cdtor-2.C | 17 +++++++++++------
 2 files changed, 22 insertions(+), 12 deletions(-)

diff --git a/libgomp/testsuite/libgomp.c++/target-cdtor-1.C 
b/libgomp/testsuite/libgomp.c++/target-cdtor-1.C
index ecb029e6b7d5..7e8cc582e94e 100644
--- a/libgomp/testsuite/libgomp.c++/target-cdtor-1.C
+++ b/libgomp/testsuite/libgomp.c++/target-cdtor-1.C
@@ -63,14 +63,19 @@ int main()
   return 0;
 }
 
-/* Verify '__cxa_atexit' calls.
+/* Verify '__cxa_atexit' calls (or '__aeabi_atexit', per 
'targetm.cxx.use_aeabi_atexit').
 
    For the host, there are four expected calls:
-   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, } 4 optimized 
{ target cxa_atexit } } }
-   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sH1, \&__dso_handle>} 1 optimized { target cxa_atexit } } }
-   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sHD1, \&__dso_handle>} 1 optimized { target cxa_atexit } } }
-   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZNSt6vectorI1SSaIS0_EED1Ev, \&svHD1, \&__dso_handle>} 1 optimized { target 
cxa_atexit } } }
-   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sH2, \&__dso_handle>} 1 optimized { target cxa_atexit } } }
+   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, } 4 optimized 
{ target { cxa_atexit && { ! arm_eabi } } } } }
+     { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, } 4 
optimized { target { cxa_atexit && arm_eabi } } } }
+   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sH1, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! 
arm_eabi } } } } }
+     { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, 
\&sH1, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && 
arm_eabi } } } }
+   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sHD1, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! 
arm_eabi } } } } }
+     { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, 
\&sHD1, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && 
arm_eabi } } } }
+   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZNSt6vectorI1SSaIS0_EED1Ev, \&svHD1, \&__dso_handle>} 1 optimized { target { 
cxa_atexit && { ! arm_eabi } } } } }
+     { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, 
\&svHD1, _ZNSt6vectorI1SSaIS0_EED1Ev, \&__dso_handle>} 1 optimized { target { 
cxa_atexit && arm_eabi } } } }
+   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sH2, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! 
arm_eabi } } } } }
+     { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, 
\&sH2, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && 
arm_eabi } } } }
 
    For the device, there are two expected calls:
    { dg-final { scan-offload-tree-dump-times {gimple_call <__cxa_atexit, } 2 
optimized { target cxa_atexit } } }
diff --git a/libgomp/testsuite/libgomp.c++/target-cdtor-2.C 
b/libgomp/testsuite/libgomp.c++/target-cdtor-2.C
index 75e48ca2f67b..9c8512245b13 100644
--- a/libgomp/testsuite/libgomp.c++/target-cdtor-2.C
+++ b/libgomp/testsuite/libgomp.c++/target-cdtor-2.C
@@ -93,14 +93,19 @@ int main()
   return 0;
 }
 
-/* Verify '__cxa_atexit' calls.
+/* Verify '__cxa_atexit' calls (or '__aeabi_atexit', per 
'targetm.cxx.use_aeabi_atexit').
 
    For the host, there are four expected calls:
-   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, } 4 optimized 
{ target cxa_atexit } } }
-   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sH1, \&__dso_handle>} 1 optimized { target cxa_atexit } } }
-   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sHD1, \&__dso_handle>} 1 optimized { target cxa_atexit } } }
-   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZNSt6vectorI1SSaIS0_EED1Ev, \&svHD1, \&__dso_handle>} 1 optimized { target 
cxa_atexit } } }
-   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sH2, \&__dso_handle>} 1 optimized { target cxa_atexit } } }
+   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, } 4 optimized 
{ target { cxa_atexit && { ! arm_eabi } } } } }
+     { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, } 4 
optimized { target { cxa_atexit && arm_eabi } } } }
+   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sH1, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! 
arm_eabi } } } } }
+     { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, 
\&sH1, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && 
arm_eabi } } } }
+   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sHD1, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! 
arm_eabi } } } } }
+     { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, 
\&sHD1, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && 
arm_eabi } } } }
+   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZNSt6vectorI1SSaIS0_EED1Ev, \&svHD1, \&__dso_handle>} 1 optimized { target { 
cxa_atexit && { ! arm_eabi } } } } }
+     { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, 
\&svHD1, _ZNSt6vectorI1SSaIS0_EED1Ev, \&__dso_handle>} 1 optimized { target { 
cxa_atexit && arm_eabi } } } }
+   { dg-final { scan-tree-dump-times {gimple_call <__cxa_atexit, NULL, 
_ZN1SD1Ev, \&sH2, \&__dso_handle>} 1 optimized { target { cxa_atexit && { ! 
arm_eabi } } } } }
+     { dg-final { scan-tree-dump-times {gimple_call <__aeabi_atexit, NULL, 
\&sH2, _ZN1SD1Ev, \&__dso_handle>} 1 optimized { target { cxa_atexit && 
arm_eabi } } } }
 
    For the device, there are two expected calls:
    { dg-final { scan-offload-tree-dump-times {gimple_call <__cxa_atexit, } 2 
optimized { target cxa_atexit } } }

Reply via email to