On 6/4/2026 10:13 PM, Martin Uecker wrote:
Am Donnerstag, dem 04.06.2026 um 21:38 -0600 schrieb Jeffrey Law:
On 6/3/2026 1:18 PM, Martin Uecker wrote:
Bootstrapped and regression tested on x86_64.
c: harmonize handling of arrays
This code harmonizes the handling of arrays in C by consistently
using build_index_type instead of build_range_type when creating
arrays and using top_array_vla_pp to detect top-level VLAs.
gcc/c-family/ChangeLog:
* c-common.cc (complete_array_type): Use build_index_type.
* c-ubsan.cc (ubsan_instrument_bounds_pointer_address):
Likewise.
gcc/c/ChangeLog:
* c-decl.cc (grokdeclarator): Likewise.
* c-typeck.cc (c_verify_type,c_build_array_type,
c_expr_countof_expr,comptypes_internal): Use top_array_vla_p.
(top_array_vla_p): Rename to use _p convention and simplify.
This is causing warning regressions on a variety of ports, including but
not limited to fr30-elf, m32r-elf, bfin-elf visium-elf, sh3-linux-gnu
c6x-elf cris-elf, etc etc.
Tests that now fail, but worked before (14 tests):
fr30-sim: gcc: gcc.dg/Warray-bounds-52.c (test for warnings, line 19)
fr30-sim: gcc: gcc.dg/Warray-bounds-52.c (test for warnings, line 20)
fr30-sim: gcc: gcc.dg/Warray-bounds-52.c (test for warnings, line 21)
fr30-sim: gcc: gcc.dg/Warray-bounds-52.c (test for warnings, line 34)
fr30-sim: gcc: gcc.dg/Warray-bounds-52.c (test for warnings, line 35)
fr30-sim: gcc: gcc.dg/Warray-bounds-52.c (test for excess errors)
fr30-sim: gcc: gcc.dg/Warray-bounds-53.c (test for warnings, line 19)
fr30-sim: gcc: gcc.dg/Warray-bounds-53.c (test for warnings, line 20)
fr30-sim: gcc: gcc.dg/Warray-bounds-53.c (test for warnings, line 21)
fr30-sim: gcc: gcc.dg/Warray-bounds-53.c (test for warnings, line 34)
fr30-sim: gcc: gcc.dg/Warray-bounds-53.c (test for warnings, line 35)
fr30-sim: gcc: gcc.dg/Warray-bounds-53.c (test for excess errors)
Strange, I wonder whether it is related to the one build_range_type
in c-common.cc
No clue. I haven't debugged it at all, just did the bisection.
jeff