comp.lang.ada
 help / color / mirror / Atom feed
From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: What is the warning about builtin-function on gcc-4.6.0 ?
Date: Wed, 30 Mar 2011 08:57:51 -0400
Date: 2011-03-30T08:57:51-04:00	[thread overview]
Message-ID: <wcc62r022b4.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: f0937e6c-cc40-47b9-b17b-2f3fd594e61e@r19g2000prm.googlegroups.com

Adam Beneschan <adam@irvine.com> writes:

> On Mar 29, 11:35�am, Robert A Duff <bobd...@shell01.TheWorld.com>
> wrote:
>
>> > And if it didn't do that, the implementor could change the function to
>> > include 'Valid on the operands to ensure that they're not invalid.
>>
>> Sure, EQUAL can raise C_E on invalid values.
>> But I don't think it can return True for invalid values
>> that are not mathematically equal. �(If it can, I think it's
>> a mistake in the REPORT package.) �I'm too lazy to inspect it
>> right now.
>
> The version of Report's body I'm looking at is from 3/29/01, but the
> comments don't indicate any changes to EQUAL since the first version.
> EQUAL can't propagate C_E because it has an exception handler for it:
> it just reverts to "return X = Y" if any exception is raised.

I see.  But as Randy pointed out, passing an invalid value to
EQUAL can raise C_E, even if abs(Integer'First) doesn not.

>...If the
> compiler's behavior is incorrect and doesn't raise C_E for
> abs(Integer'First) when it's supposed to, then presumably
> abs(Integer'First) will still be Integer'First (on a normal 2's
> complement machine), and EQUAL will return TRUE.

Right, that would be a compiler bug.

I was imagining a compiler that returns the right answer for
abs(Integer'First).  It's not entirely unreasonable.  Perhaps
Integer is 32 bits, and the arithmetic is done in a 64-bit
register, which can obviously represent 2**31 just fine.

>...[If the compiler did
> something interesting like reserving a bit pattern like 16#8000# or
> 16#80000000# to be an invalid integer, then Integer'Last would be -
> Integer'First and the interesting part of C45632A would never be
> executed due to the first IF.]

I've used compilers that did that.  Not Ada compilers, though.

- Bob



  reply	other threads:[~2011-03-30 12:57 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-26  6:32 What is the warning about builtin-function on gcc-4.6.0 ? ytomino
2011-03-26  8:45 ` Florian Weimer
2011-03-26  9:13   ` ytomino
2011-03-26  9:43     ` Florian Weimer
2011-03-26 10:07       ` ytomino
2011-03-26 10:24         ` Florian Weimer
2011-03-26 15:14           ` Dmitry A. Kazakov
2011-03-26 21:36             ` ytomino
2011-03-27  9:50               ` Dmitry A. Kazakov
2011-03-26 14:50         ` Simon Wright
2011-03-26 15:50           ` Florian Weimer
2011-03-26 16:32             ` Simon Wright
2011-03-26 17:02               ` Florian Weimer
2011-03-26 17:48                 ` Simon Wright
2011-03-26 18:48                   ` Florian Weimer
2011-03-27  2:08                 ` Randy Brukardt
2011-03-27  8:37                   ` Florian Weimer
2011-03-27 16:41                     ` Robert A Duff
2011-03-27 17:21                       ` Florian Weimer
2011-03-27 17:56                         ` Robert A Duff
2011-03-27 16:51                     ` Robert A Duff
2011-03-27 17:05                       ` Florian Weimer
2011-03-27 17:14                         ` Robert A Duff
2011-03-29  2:20                           ` Randy Brukardt
2011-03-29 18:35                             ` Robert A Duff
2011-03-29 23:35                               ` Randy Brukardt
2011-03-30  1:02                               ` Adam Beneschan
2011-03-30 12:57                                 ` Robert A Duff [this message]
2011-03-30 14:41                                   ` Adam Beneschan
2011-03-30 18:39                                     ` Robert A Duff
2011-03-30 19:28                                   ` Randy Brukardt
2011-03-26 21:58       ` ytomino
2011-03-26 22:00         ` Florian Weimer
2011-03-26 22:22 ` anon
2011-03-26 22:36   ` ytomino
2011-03-27 12:00     ` anon
2011-03-27 18:50       ` ytomino
2011-03-27 23:35         ` anon
2011-03-27 23:42         ` anon
replies disabled

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