This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: New gcc 4.0.0 warnings seem spurious
On 2005-04-27 15:26:39 +0200, Gabriel Dos Reis wrote:
> Vincent Lefevre <vincent+gcc@vinc17.org> writes:
>
> | On 2005-04-27 03:37:15 -0700, Zack Weinberg wrote:
> | > Vincent Lefevre <vincent+gcc@vinc17.org> writes:
> | > > However it is correct to store any integer to an unsigned variable,
> | > > even if the original value cannot be represented.
> | >
> | > If that operation occurs at runtime it has a well-defined result.
> |
> | And gcc 4 doesn't output a diagnostic in this case?
>
> Why shall it?
No reason. I was just asking for a confirmation (I don't have gcc 4
here yet).
> In my version of the C standard, 6.6 contains *at least* these two
> constraints
> Semantics
>
> [#5] An expression that evaluates to a constant is required
> in several contexts. If a floating expression is evaluated
> in the translation environment, the arithmetic precision and
> range shall be at least as great as if the expression were
> being evaluated in the execution environment.
>
> [#6] An integer constant expression96) shall have integer
> type and shall only have operands that are integer
> constants, enumeration constants, character constants,
> sizeof expressions whose results are integer constants, and
> floating constants that are the immediate operands of casts.
> Cast operators in an integer constant expression shall only
> convert arithmetic types to integer types, except as part of
> an operand to the sizeof operator.
>
> Clearly, 6.6/6 rules out AAA from being an integer constant.
It rules out AAA from being an integer constant expression.
--
Vincent Lefèvre <vincent@vinc17.org> - Web: <http://www.vinc17.org/>
100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
Work: CR INRIA - computer arithmetic / SPACES project at LORIA