comp.lang.ada
 help / color / mirror / Atom feed
From: "Jeffrey Creem" <jeff@thecreems.com>
Subject: Re: Exceptions in GNAT
Date: Sun, 02 Jun 2002 12:39:33 GMT
Date: 2002-06-02T12:39:33+00:00	[thread overview]
Message-ID: <9moK8.17320$Oj7.4886808@typhoon.ne.ipsvc.net> (raw)
In-Reply-To: 3CF9FBC1.7040701@yahoo.com

The only exceptions you are getting are coming from the IO (Data_Error) when
you enter
integers larger then the largest integer. There is explicit code hiding in
the body of text_IO.integer_IOt
that is finding that your data is not appropriate for the type.

What you want is integer overflow checking enabled. GNAT/GCC require a few
options to get
LRM compliant checks "On". GNAT does have many checks enabled by default bit
integer
overflow is not one of them. Check the google history of this group for the
"best" recommended options.

When in the heat of development, I usually use something like :

gnatmake -g -gnato -fstack-check  my_program_name

You need to read through the GNAT users guide to get the rest of the options
for your other questions (since I am not entirely clear how many of these
questions
are part of the assignment and how many are personal knowledge requests).







"David Rasmussen" <pinkfloydhomer@yahoo.com> wrote in message
news:3CF9FBC1.7040701@yahoo.com...
> David Rasmussen wrote:
> > I am learning Ada, and in one exercise I am told to find out how large
> > and integer I can use on my system, before it overflows. The exercise
> > just tells me to add two larger and larger numbers and see when an
> > exception occurs. I have just compiled my program with gnatmake with no
> > options, and I am using gcc 3.1 . When the numbers get large enough, the
> > result is just a negative number because of wrap-around. Shouldn't I get
> > an exception, unless I turn it off? How do I compile for with most
> > checks for debug builds, and how do I compile with everything turned off
> > for performance intensive release builds?
> >
> > /David
> >
>
> D'oh.... This is weird:
>
> Enter two integers: 2100000000 0
> The sum is 2100000000
> david@amadeus-T23:~/src/Ada/Ex21$ ./sum
> Enter two integers: 2200000000 0
>
>
> raised ADA.IO_EXCEPTIONS.DATA_ERROR : a-tiinio.adb:91 instantiated at
> a-inteio.ads:20
> david@amadeus-T23:~/src/Ada/Ex21$ ./sum
> Enter two integers: 2147483648 0
>
>
> raised ADA.IO_EXCEPTIONS.DATA_ERROR : a-tiinio.adb:91 instantiated at
> a-inteio.ads:20
> david@amadeus-T23:~/src/Ada/Ex21$ ./sum
> Enter two integers: 2147483647 0
> The sum is 2147483647
> david@amadeus-T23:~/src/Ada/Ex21$ ./sum
> Enter two integers: 2147483647 1
> The sum is-2147483648
> david@amadeus-T23:~/src/Ada/Ex21$ ./sum
> Enter two integers: 2147483647 2
> The sum is-2147483647
> david@amadeus-T23:~/src/Ada/Ex21$
>
> Sometimes there's an exception, and sometimes there isn't... What's
> happening??
>
> /David
>





  parent reply	other threads:[~2002-06-02 12:39 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-02 11:01 Exceptions in GNAT David Rasmussen
2002-06-02 11:04 ` David Rasmussen
2002-06-02 12:36   ` Preben Randhol
2002-06-02 12:39   ` Jeffrey Creem [this message]
2002-06-02 12:26 ` David C. Hoos, Sr.
2002-06-02 12:28 ` Preben Randhol
2002-06-02 12:39   ` David Rasmussen
2002-06-02 15:34   ` Simon Wright
2002-06-02 15:02 ` Robert Dewar
2002-06-02 20:37 ` Jeffrey Carter
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox