]> git.ipfire.org Git - thirdparty/gcc.git/commit
varasm: Fix up array_size_for_constructor RAW_DATA_CST handling once again [PR118275]
authorJakub Jelinek <jakub@redhat.com>
Fri, 3 Jan 2025 16:59:57 +0000 (17:59 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 3 Jan 2025 16:59:57 +0000 (17:59 +0100)
commit6f444e45d3fd6c45fc34a79ac66bf46c20fd95b1
tree7f8cfef370d3616038a78df2bae0868cbc719f0c
parent514577c66b39fc321bec1c957130fbcd66207822
varasm: Fix up array_size_for_constructor RAW_DATA_CST handling once again [PR118275]

As the following testcases show (the latter only if I revert the
temporary reversion of the C++ large array speedup), the FEs aren't
really consistent in the type of array CONSTRUCTOR_ELTS indexes,
it can be bitsizetype, but can be sizetype as well.
Given that everything else is able to cope with it just fine,
I'm using build_int_cst which also doesn't care what type it is,
instead of bitsize_int, which I've used in PR117190 fix (previously
it was size_int).

2025-01-03  Jakub Jelinek  <jakub@redhat.com>

PR c++/118275
* varasm.cc (array_size_for_constructor): Use build_int_cst
with TREE_TYPE (index) as first argument, instead of bitsize_int.

* g++.dg/cpp/embed-18.C: New test.
* g++.dg/ext/flexary41.C: New test.
gcc/testsuite/g++.dg/cpp/embed-18.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/flexary41.C [new file with mode: 0644]
gcc/varasm.cc