Hi! On 2025-04-17T18:15:50+0000, ci_notify--- via Gcc-regression <gcc-regression@gcc.gnu.org> 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 <tschwi...@baylibre.com> > | 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 > linaro-toolch...@lists.linaro.org 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 <tschwi...@baylibre.com> 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