From: Jerry <lanceboyle@qwest.net>
Subject: Re: GNAT does not consistently raise an exception to log(0.0)
Date: Sat, 13 Jul 2013 20:44:28 -0700 (PDT)
Date: 2013-07-13T20:44:28-07:00 [thread overview]
Message-ID: <edd0a6be-d60d-441b-8668-557fbe9e3fd7@googlegroups.com> (raw)
In-Reply-To: <151a6f74-9100-49dc-8c0c-f656aed1d7ea@googlegroups.com>
On Saturday, July 13, 2013 2:37:20 AM UTC-7, AdaMagica wrote:
> On Saturday, July 13, 2013 2:52:08 AM UTC+2, Jerry wrote:
> > with Ada.Numerics.Long_Elementary_Functions;
> > use Ada.Numerics.Long_Elementary_Functions;
> > procedure Bomb_Log is
> > x : Long_Float;
> > begin
> > x := log(0.0);
> > end Bomb_Log;
> >
> > However, under the same conditions as above, the following program raises the exception always:
> >
> > with Ada.Numerics.Long_Elementary_Functions;
> > use Ada.Numerics.Long_Elementary_Functions;
> > with Ada.Text_IO;
> > use Ada.Text_IO;
> > procedure Bomb_Log is
> > x : Long_Float;
> > begin
> > x := log(0.0);
> > Put_Line(Long_Float'Image(x));
> > end Bomb_Log;
>
> That's easy. In the first version, the compiler optimizes X away, since it's not used for any external effects.
Yes, as Simon has also shown with the generated code differences.
>
> In the second version, you output an invalid value.
No--I only attempt to output an invalid value. The Put_Line is never executed because the exception is raised before that, at the log(0.0) level.
> See RM on allowed optimizations.
I suppose that would be 11.6(5):
http://www.adaic.org/resources/add_content/standards/12rm/html/RM-11-6.html
Jerry
next prev parent reply other threads:[~2013-07-14 3:44 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-07-13 0:52 GNAT does not consistently raise an exception to log(0.0) Jerry
2013-07-13 1:47 ` Anh Vo
2013-07-13 2:12 ` Jerry
2013-07-13 2:28 ` Anh Vo
2013-07-13 3:33 ` Jerry
2013-07-14 3:28 ` Jerry
2013-07-14 13:35 ` Anh Vo
2013-07-15 8:25 ` Jerry
2013-07-13 7:26 ` Dmitry A. Kazakov
2013-07-14 3:34 ` Jerry
2013-07-14 3:51 ` Jerry
2013-07-13 7:34 ` Simon Wright
2013-07-14 3:42 ` Jerry
2013-07-13 9:37 ` AdaMagica
2013-07-14 3:44 ` Jerry [this message]
2013-07-15 17:16 ` AdaMagica
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox