https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114186
Bug ID: 114186
Summary: Incorrect CTF generated for multidimensional array
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: debug
Assignee: unassigned at gcc dot gnu.org
Reporter: ibhagat at gcc dot gnu.org
Target Milestone: ---
$ cat array.c
int a[5][9][3];
$ gcc -O0 -gctf -dA -S array.c
Excerpt from array.s:
...
.long 0x17 # ctv_name
.long 0x5 # ctv_typeidx
=> a variable of type id = 5
.long 0x1 # ctt_name
.long 0x6000000 # ctt_info
.long 0x4 # ctt_size or ctt_type
.long 0x1000020 # ctf_encoding_data
=> type id = 1, type = int
.long 0x5 # ctt_name
.long 0x6000000 # ctt_info
.long 0x8 # ctt_size or ctt_type
.long 0x40 # ctf_encoding_data
=> type id = 2, type = long unsigned int
.long 0 # ctt_name
.long 0x12000000 # ctt_info
.long 0 # ctt_size or ctt_type
.long 0x1 # cta_contents
.long 0x2 # cta_index
.long 0x5 # cta_nelems
=> type id = 3, nelems = 5, array contents (cta_contents) of type with type id
= 1
.long 0 # ctt_name
.long 0x12000000 # ctt_info
.long 0 # ctt_size or ctt_type
.long 0x3 # cta_contents
.long 0x2 # cta_index
.long 0x9 # cta_nelems
=> type id = 4, nelems = 9, array contents (cta_contents) of type with type id
= 3
.long 0 # ctt_name
.long 0x12000000 # ctt_info
.long 0 # ctt_size or ctt_type
.long 0x4 # cta_contents
.long 0x2 # cta_index
.long 0x3 # cta_nelems
=> type id = 5, nelems = 3, array contents (cta_contents) of type with type id
= 4
In other words, the data type of the variable is being emitted as if it were
int a[3][9][5]