]> git.ipfire.org Git - thirdparty/gcc.git/commit
d: Fix accesses of immutable arrays using constant index still bounds checked
authorIain Buclaw <ibuclaw@gdcproject.org>
Sat, 1 Jul 2023 21:32:53 +0000 (23:32 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Sat, 1 Jul 2023 23:19:19 +0000 (01:19 +0200)
commit3f43c19d0d40b82ecfd10f277322c1f786bcd76d
tree1ad508c04629dee015a24d0e28817d9f311c8517
parent6e7909191ada316a426739eab88139d63194e05a
d: Fix accesses of immutable arrays using constant index still bounds checked

Starts setting TREE_READONLY against specific kinds of VAR_DECLs, so
that the middle-end/optimization passes can more aggressively constant
fold D code that makes use of `immutable' or `const'.

PR d/110514

gcc/d/ChangeLog:

* decl.cc (get_symbol_decl): Set TREE_READONLY on certain kinds of
const and immutable variables.
* expr.cc (ExprVisitor::visit (ArrayLiteralExp *)): Set TREE_READONLY
on immutable dynamic array literals.

gcc/testsuite/ChangeLog:

* gdc.dg/pr110514a.d: New test.
* gdc.dg/pr110514b.d: New test.
* gdc.dg/pr110514c.d: New test.
* gdc.dg/pr110514d.d: New test.

(cherry picked from commit 61b1c562f8c703bff045e91257120e42b7fae523)
gcc/d/decl.cc
gcc/d/expr.cc
gcc/testsuite/gdc.dg/pr110514a.d [new file with mode: 0644]
gcc/testsuite/gdc.dg/pr110514b.d [new file with mode: 0644]
gcc/testsuite/gdc.dg/pr110514c.d [new file with mode: 0644]
gcc/testsuite/gdc.dg/pr110514d.d [new file with mode: 0644]