https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119507

            Bug ID: 119507
           Summary: The function order affects the names of the
                    gcc_except_table sections in the assembly code.
           Product: gcc
           Version: 15.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: chenglulu at loongson dot cn
  Target Milestone: ---

The function order affects the names of the gcc_except_table sections in the
assembly code.

test.cc
```
int another_func_with_exception() { try { throw 1; } catch (int) { return 1; }
return 0; }
inline int comdat() { try { throw 1; } catch (int) { return 1; } return 0; }
int foo() { return comdat(); } 
```
$ g++ test.cc -o test.s -S

This will generate two gcc_except_table sections.

```
        .globl  _Z27another_func_with_exceptionv
        .type   _Z27another_func_with_exceptionv, @function
_Z27another_func_with_exceptionv:
...
.LFE0:
        .globl  __gxx_personality_v0
        .section        .gcc_except_table,"a",@progbits
        .align 4
```
and
```
        .weak   _Z6comdatv
        .type   _Z6comdatv, @function
_Z6comdatv:
...
.LFE1:
        .section        .gcc_except_table
        .align 4
```
However, when I swap the writing order of another_func_with_exception and
comdat,
the following is generated:
```
        .type   _Z6comdatv, @function
_Z6comdatv:
.LFB0:
...
.LFE0:
        .globl  __gxx_personality_v0
        .section       
.gcc_except_table._Z6comdatv,"aG",@progbits,_Z6comdatv,comdat
        .align 4

```
and
```
        .type   _Z27another_func_with_exceptionv, @function
_Z27another_func_with_exceptionv:
...
.LFE1:
        .section        .gcc_except_table,"a",@progbits
        .align 4
```
The name of the gcc_except_table generated by the function comdat has changed.

Reply via email to