Hi!
On 2025-04-17T18:15:50+0000, ci_notify--- via Gcc-regression
<[email protected]> wrote:
> Our automatic CI has detected problems related to your patch(es). Please find
> some details below.
>
> In bootstrap_check master-arm-check_bootstrap, after:
> | commit gcc-15-9463-gaa3e72f9430
> | Author: Thomas Schwinge <[email protected]>
> | Date: Thu Mar 27 23:06:37 2025 +0100
> |
> | Add test cases for exception handling constructs in dead code for
> GCN, nvptx target and OpenMP 'target' offloading [PR118794]
> |
> | PR target/118794
> | gcc/testsuite/
> | * g++.target/gcn/exceptions-pr118794-1.C: New.
> | ... 7 lines of the commit log omitted.
>
> Produces 2 regressions:
> |
> | regressions.sum:
> | Running libgomp:libgomp.c++/c++.exp ...
> | FAIL: libgomp.c++/target-exceptions-pr118794-1.C scan-tree-dump-times
> optimized "gimple_call <__builtin_eh_pointer, " 1
> | FAIL: libgomp.c++/target-exceptions-pr118794-1.C scan-tree-dump-times
> optimized "gimple_call <__builtin_unwind_resume, " 1
Ah, sorry for that. This is due to 'targetm.arm_eabi_unwinder', as per:
gcc/config/arm/arm.cc:#define TARGET_ARM_EABI_UNWINDER true
gcc/config/c6x/c6x.cc:#define TARGET_ARM_EABI_UNWINDER true
..., which for ARM is conditional to '#if ARM_UNWIND_INFO' (defined in
'gcc/config/arm/bpabi.h', used for various GCC configurations), and for
C6x unconditional.
This gets us:
--- target-exceptions-pr118794-1.C.269t.optimized
+++ target-exceptions-pr118794-1.C.270t.optimized
[...]
__attribute__((omp declare target))
void f ()
[...]
gimple_call <__dt_comp , NULL, &c>
- gimple_call <__builtin_eh_pointer, _7, 2>
- gimple_call <__builtin_unwind_resume, NULL, _7>
+ gimple_call <__builtin_cxa_end_cleanup, NULL>
}
[...]
There doesn't appear to be an effective-target keyword for
'targetm.arm_eabi_unwinder' specifically, do we need to add one?
Or, other test cases appear to use effective-target 'arm_eabi' to
disambiguate the two variants; is that the right thing to use here, too?
(..., plus 'tic6x-*-*' in this case?) OK to push the attached
"Adjust 'libgomp.c++/target-exceptions-pr118794-1.C' for
'targetm.arm_eabi_unwinder' [PR118794]"?
(Could Arm/C6x maintainers please test this for me?)
Grüße
Thomas
> Used configuration :
> *CI config* tcwg_bootstrap_check master-arm-check_bootstrap
> *configure and test flags:* none, autodetected on
> armv8l-unknown-linux-gnueabihf
>
> We track this bug report under https://linaro.atlassian.net/browse/GNU-1562.
> Please let us know if you have a fix.
>
> If you have any questions regarding this report, please ask on
> [email protected] mailing list.
>
> -----------------8<--------------------------8<--------------------------8<--------------------------
>
> The information below contains the details of the failures, and the ways to
> reproduce a debug environment:
>
> You can find the failure logs in *.log.1.xz files in
> *
> https://ci.linaro.org/job/tcwg_bootstrap_check--master-arm-check_bootstrap-build/1236/artifact/artifacts/00-sumfiles/
> The full lists of regressions and improvements as well as configure and make
> commands are in
> *
> https://ci.linaro.org/job/tcwg_bootstrap_check--master-arm-check_bootstrap-build/1236/artifact/artifacts/notify/
> The list of [ignored] baseline and flaky failures are in
> *
> https://ci.linaro.org/job/tcwg_bootstrap_check--master-arm-check_bootstrap-build/1236/artifact/artifacts/sumfiles/xfails.xfail
>
> Current build :
> https://ci.linaro.org/job/tcwg_bootstrap_check--master-arm-check_bootstrap-build/1236/artifact/artifacts
> Reference build :
> https://ci.linaro.org/job/tcwg_bootstrap_check--master-arm-check_bootstrap-build/1235/artifact/artifacts
>
> Instruction to reproduce the build :
> https://git-us.linaro.org/toolchain/ci/interesting-commits.git/plain/gcc/sha1/aa3e72f943032e5f074b2bd2fd06d130dda8760b/tcwg_bootstrap_check/master-arm-check_bootstrap/reproduction_instructions.txt
>
> Full commit :
> https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=aa3e72f943032e5f074b2bd2fd06d130dda8760b
>From 423af3203bd9ebcf1f472f244c8e0d698163967f Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <[email protected]>
Date: Tue, 22 Apr 2025 13:41:22 +0200
Subject: [PATCH] Adjust 'libgomp.c++/target-exceptions-pr118794-1.C' for
'targetm.arm_eabi_unwinder' [PR118794]
Fix-up for commit aa3e72f943032e5f074b2bd2fd06d130dda8760b
"Add test cases for exception handling constructs in dead code for GCN, nvptx target and OpenMP 'target' offloading [PR118794]":
we need to adjust for configurations with 'targetm.arm_eabi_unwinder', as per:
gcc/config/arm/arm.cc:#define TARGET_ARM_EABI_UNWINDER true
gcc/config/c6x/c6x.cc:#define TARGET_ARM_EABI_UNWINDER true
..., which for ARM is conditional to '#if ARM_UNWIND_INFO' (defined in
'gcc/config/arm/bpabi.h', used for various GCC configurations), and for
C6x unconditional.
This gets us:
--- target-exceptions-pr118794-1.C.269t.optimized
+++ target-exceptions-pr118794-1.C.270t.optimized
[...]
__attribute__((omp declare target))
void f ()
[...]
gimple_call <__dt_comp , NULL, &c>
- gimple_call <__builtin_eh_pointer, _7, 2>
- gimple_call <__builtin_unwind_resume, NULL, _7>
+ gimple_call <__builtin_cxa_end_cleanup, NULL>
}
[...]
PR target/118794
libgomp/
* testsuite/libgomp.c++/target-exceptions-pr118794-1.C: Adjust for
'targetm.arm_eabi_unwinder'.
* testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C:
Likewise.
* testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C:
Likewise.
---
.../target-exceptions-pr118794-1-offload-sorry-GCN.C | 6 ++++--
.../target-exceptions-pr118794-1-offload-sorry-nvptx.C | 6 ++++--
.../testsuite/libgomp.c++/target-exceptions-pr118794-1.C | 6 ++++--
3 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C b/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C
index 3cdedf48529..d4dccf167fb 100644
--- a/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C
+++ b/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-GCN.C
@@ -14,8 +14,10 @@
/* In this specific C++ arrangement, distilled from PR118794, GCC synthesizes
'__builtin_eh_pointer', '__builtin_unwind_resume' calls as dead code in 'f':
- { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
- { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
+ { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
+ { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
+ ..., just 'targetm.arm_eabi_unwinder' is different:
+ { dg-final { scan-tree-dump-times {gimple_call <__builtin_cxa_end_cleanup, } 1 optimized { target { arm_eabi || tic6x-*-* } } } }
{ dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
{ dg-final { only_for_offload_target amdgcn-amdhsa scan-offload-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
Given '-O0' and '-foffload-options=-mno-fake-exceptions', offload compilation fails:
diff --git a/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C b/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C
index ef996cfff7f..724e34bd923 100644
--- a/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C
+++ b/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1-offload-sorry-nvptx.C
@@ -14,8 +14,10 @@
/* In this specific C++ arrangement, distilled from PR118794, GCC synthesizes
'__builtin_eh_pointer', '__builtin_unwind_resume' calls as dead code in 'f':
- { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
- { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
+ { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
+ { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
+ ..., just 'targetm.arm_eabi_unwinder' is different:
+ { dg-final { scan-tree-dump-times {gimple_call <__builtin_cxa_end_cleanup, } 1 optimized { target { arm_eabi || tic6x-*-* } } } }
{ dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
{ dg-final { only_for_offload_target nvptx-none scan-offload-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
Given '-O0' and '-foffload-options=-mno-fake-exceptions', offload compilation fails:
diff --git a/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1.C b/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1.C
index 24e3d076a1b..24eb7a59c79 100644
--- a/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1.C
+++ b/libgomp/testsuite/libgomp.c++/target-exceptions-pr118794-1.C
@@ -51,7 +51,9 @@ int main()
/* In this specific C++ arrangement, distilled from PR118794, GCC synthesizes
'__builtin_eh_pointer', '__builtin_unwind_resume' calls as dead code in 'f':
- { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
- { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } }
+ { dg-final { scan-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
+ { dg-final { scan-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized { target { ! { arm_eabi || tic6x-*-* } } } } }
+ ..., just 'targetm.arm_eabi_unwinder' is different:
+ { dg-final { scan-tree-dump-times {gimple_call <__builtin_cxa_end_cleanup, } 1 optimized { target { arm_eabi || tic6x-*-* } } } }
{ dg-final { scan-offload-tree-dump-times {gimple_call <__builtin_eh_pointer, } 1 optimized } }
{ dg-final { scan-offload-tree-dump-times {gimple_call <__builtin_unwind_resume, } 1 optimized } } */
--
2.34.1