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

Reply via email to