Hi! On 2025-02-08T13:17:55+0100, I wrote: > pushed to trunk branch commit 6312165650091a4df34668d8e2aaa0bbc4008a66 > "GCN, nvptx: 'sorry, unimplemented: exception handling not supported'"
> For GCN, this avoids ICEs further down the compilation pipeline. For the record, in case that's helpful later on, here's a note from ~2023-04: | Before [...], we got a lot of ICEs in 'g++' testing for '-fexceptions' etc. | For example, 'g++.dg/pr49847.C': | | $ build-gcc/gcc/xg++ -Bbuild-gcc/gcc/ source-gcc/gcc/testsuite/g++.dg/pr49847.C -std=gnu++98 -O -fnon-call-exceptions -Wno-return-type -S -o pr49847.s | during RTL pass: jump | source-gcc/gcc/testsuite/g++.dg/pr49847.C: In function ‘int f(float)’: | source-gcc/gcc/testsuite/g++.dg/pr49847.C:7:1: internal compiler error: Segmentation fault | 7 | } | | ^ | 0x1216aaf crash_signal | [...]/gcc/toplev.cc:314 | 0x1ef5d23 count_reg_usage | [...]/gcc/cse.cc:6757 | 0x1ef5f0a count_reg_usage | [...]/gcc/cse.cc:6797 | 0x1efba4c delete_trivially_dead_insns(rtx_insn*, int) | [...]/gcc/cse.cc:7028 | 0x1ea4e36 execute | [...]/gcc/cfgcleanup.cc:3237 | | ..., and likewise for a lot of other 'g++' test cases, but also | 'gcc.dg/pr104464.c', 'gcc.dg/uninit-pr106881.c', 'gcc.dg/torture/pr105484.c'. | | The SIGSEGV is due to 'REGNO ("reg:DI -1") == INVALID_REGNUM', and | 'INVALID_REGNUM == (~(unsigned int) 0)', which doesn't work in | 'count_reg_usage': | | counts[REGNO (x)] += incr; | | Trying to work around this locally is not sufficient; further ICEs down the | line. | | The 'INVALID_REGNUM' is due to 'gcc/defaults.h:EH_RETURN_DATA_REGNO'. Grüße Thomas