]> git.ipfire.org Git - thirdparty/gcc.git/commit
ada: Avoid renaming_decl in case of constrained array
authorBob Duff <duff@adacore.com>
Mon, 3 Jul 2023 16:01:01 +0000 (12:01 -0400)
committerMarc Poulhiès <poulhies@adacore.com>
Tue, 11 Jul 2023 09:24:29 +0000 (11:24 +0200)
commit6be7d5e91e47c5432391b03de9f89e7ec6072eda
tree17ffc8cd2fa67677efc6a3bcfb8354922a5bc4f1
parent8957121b8bf4be7eb7f9de31b810ea01594a670e
ada: Avoid renaming_decl in case of constrained array

This patch avoids rewriting "X: S := F(...);" as "X: S renames F(...);".
That rewrite is incorrect if S is a constrained array subtype,
because it changes the semantics. In the original, the
bounds of X are that of S. But constraints are ignored in
renamings, so the bounds of X would come from F'Result.
This can cause spurious Constraint_Errors in some obscure
cases. It causes unnecessary checks to be inserted, and even
when such checks pass (more common case), they might be less
efficient.

gcc/ada/

* exp_ch3.adb (Expand_N_Object_Declaration): Avoid transforming to
a renaming in case of constrained array that comes from source.
gcc/ada/exp_ch3.adb