From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Memory limits in Ada where Fortran has none
Date: 16 Mar 2005 14:51:26 -0500
Date: 2005-03-16T14:51:26-05:00 [thread overview]
Message-ID: <wccwts7s729.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: pan.2005.03.08.11.25.00.810114@linuxchip.demon.co.uk.uk.uk
"Dr. Adrian Wrigley" <amtw@linuxchip.demon.co.uk.uk.uk> writes:
> On Sun, 06 Mar 2005 19:05:21 -0500, Robert A Duff wrote:
>
> > The following works for me:
> >
> > package Test_Pkg is
> > X: array (1..400_000_000) of Integer := (others => 999);
> > end Test_Pkg;
> >
> > with Test_Pkg; use Test_Pkg;
> > with Text_IO; use Text_IO;
> > procedure Test is
> > begin
> > Put_Line(Integer'Image(X(X'Last)));
> > end Test;
>
> I am very wary of a test like this because GNAT sometimes
> silently accesses the wrong element of very large data, if I
> remember correctly.
Well, the original poster was complaining that you can't allocate large
amounts of memory in Ada, but you can in Fortran, and I was just trying
to test that. But, OK, how about this:
package Test_Pkg is
pragma Elaborate_Body;
X: array (1..400_000_000) of Integer := (others => 999);
end Test_Pkg;
package body Test_Pkg is
begin
for I in X'Range loop
X(I) := Integer'Last - I;
end loop;
end Test_Pkg;
with Test_Pkg; use Test_Pkg;
with Text_IO; use Text_IO;
procedure Test is
begin
for I in X'Range loop
pragma Assert(X(I) = Integer'Last - I); null;
end loop;
Put_Line(Integer'Image(X(X'Last)));
end Test;
Works fine, for me. Takes quite a while to run, of course,
since I don't have that much RAM on my machine.
>... A correctly written program can (and did!)
> thus fail catastrophically. Large records in particular are
> suspect (on GNAT 3.15p, x86). (I have no test case to hand
> at the moment). I don't know if it is affected by -gnato
> and default absence of overflow checking.
I guess you should send them a bug report.
> A more comforting test would place a *different* value at
> each location, and check they are all correct!
OK, the above example does that (but it's an array,
not a record).
- Bob
next prev parent reply other threads:[~2005-03-16 19:51 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-03-06 0:54 Memory limits in Ada where Fortran has none braver
2005-03-06 1:09 ` Jeff C
2005-03-06 6:18 ` braver
2005-03-06 9:26 ` Martin Krischik
2005-03-06 16:14 ` braver
2005-03-06 16:28 ` Jeff C
2005-03-06 23:09 ` Craig Carey
2005-03-07 0:36 ` braver
2005-03-07 5:55 ` braver
2005-03-08 5:35 ` braver
2005-03-06 14:09 ` Stephen Leake
2005-03-06 9:33 ` Martin Krischik
2005-03-06 22:13 ` Gerald
2005-03-06 23:01 ` Dr. Adrian Wrigley
2005-03-07 0:31 ` braver
2005-03-07 12:47 ` Dr. Adrian Wrigley
2005-03-07 9:41 ` Martin Krischik
2005-03-07 11:59 ` Dr. Adrian Wrigley
2005-03-07 12:26 ` Martin Krischik
2005-03-07 0:05 ` Robert A Duff
2005-03-07 18:04 ` braver
2005-03-16 19:41 ` Robert A Duff
2005-03-17 18:49 ` Martin Krischik
2005-03-08 11:24 ` Dr. Adrian Wrigley
2005-03-09 3:39 ` Craig Carey
2005-03-16 17:39 ` Craig Carey
2005-03-16 19:51 ` Robert A Duff [this message]
2005-03-16 23:47 ` Dr. Adrian Wrigley
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox