This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug ada/25573] New: Incorrect result returning constrained subtype (slice) with non-trivial return expression
- From: "jeff at thecreems dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 27 Dec 2005 04:42:07 -0000
- Subject: [Bug ada/25573] New: Incorrect result returning constrained subtype (slice) with non-trivial return expression
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
The library PNG_IO fails during elaboration while performing some sanity checks
on its internal functions.
This was created on i386-redhat-linux-gnu (Centos 4)
I have boiled this down to a pretty simple test case that looks like the issue
happens when a function is returning a constrained subtype of an unconstrained
array and it is doing so when building the return value from an expression.
The following code should print abcd. Instead, it prints several garbage
characters.
with Text_IO;
with Interfaces; use Interfaces;
procedure Slice_Bug is
subtype Slice_Type is String(1 .. 4);
function identity(A : in Character) return Character is
begin
return a;
end identity;
function Get_Slice return Slice_Type is
begin
return identity('a') & identity('b') & identity('c') & identity('d');
end Get_Slice;
begin
Text_IO.Put_Line(Get_Slice);
end Slice_Bug;
Removing the constraint from the subtype makes this code work as expected.
Leaving the constraint in and doing a simple return "abcd" also works.
--
Summary: Incorrect result returning constrained subtype (slice)
with non-trivial return expression
Product: gcc
Version: 4.0.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: ada
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jeff at thecreems dot com
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25573