This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug ada/61466] New: Array index check optimized away
- From: "simon at pushface dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Tue, 10 Jun 2014 20:11:38 +0000
- Subject: [Bug ada/61466] New: Array index check optimized away
- Auto-submitted: auto-generated
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61466
Bug ID: 61466
Summary: Array index check optimized away
Product: gcc
Version: 4.9.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ada
Assignee: unassigned at gcc dot gnu.org
Reporter: simon at pushface dot org
Created attachment 32916
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=32916&action=edit
Source code (package spec/body, main procedure)
In the attached code, the index check in procedure Violate on the âOutput: out
Arrâ parameter is present with -O0 but is omitted with higher levels. This is
clearly visible with -gnatG:
-O0:
L_1 : for j in input'first .. input'last loop
B_2 : declare
[constraint_error when
not (integer(j) in modifier'first .. modifier'last)
"index check failed"]
product : constant integer := modifier (j);
begin
[constraint_error when
not (integer(j) in output'first .. output'last)
"index check failed"]
output (j) := product / 2;
end B_2;
end loop L_1;
-O1:
L_1 : for j in input'first .. input'last loop
B_2 : declare
[constraint_error when
not (integer(j) in modifier'first .. modifier'last)
"index check failed"]
product : constant integer := modifier (j);
begin
output (j) := product / 2;
end B_2;
end loop L_1;
The bug is present at least in GCC 4.6 on Debian and GCC 4.7 .. 4.9 on Mac OS
X, also in GNAT GPL 2012 .. 2014.