This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fix libgomp Fortran tests


On Thu, Sep 07, 2006 at 11:38:26PM -0700, Brooks Moses wrote:
> Roger Sayle wrote:
> >On Thu, 7 Sep 2006, Steve Kargl wrote:
> >>The Fortran tried to use the most negative integer value, but
> >>this cause an overflow because gfortran creates this value
> >>via a unary minus operation.
> >
> >Whilst I agree completely that prohibiting the constant -2147483648
> >adheres to the letter of the standards, might it not be reasonable
> >to support this as a STD_GNU or a STD_LEGACY extension for compatability
> >with other compilers (such as previous versions of gfortran and g77)
> >that are more forgiving in the constants that they accept.
> >
> >I'm curious how many other F90/F95 compilers (dis)allow -2147483648?
> 
> I've been poking at this trying to figure out exactly what the rules 
> are, and I will note that I think there's an interesting hair to split here.
> 
> By R305, a constant can be a literal-constant, which can by R306 be an 
> int-literal-constant (but not a signed-int-literal-constant), and thus 
> using -2147493648 in an assignment implies that it is to be interpreted 
> as the positive value with a unary operator applied, and that positive 
> value is out of range.
> 
> However, in a DATA statement, the values are not "constants", they are 
> "data-stmt-constants", defined in rule R540, and these use signed 
> literal constants (including signed-int-literal-constant) rather than 
> unsigned ones.  As expressions are not allowed as DATA statement values, 
> the interpretation of a negative integer remains unambiguous.
> 
> Thus, while
> 
>   INTEGER J = -2147493648
> 
> is not permitted,
> 
>   INTEGER J
>   DATA J / -2147493648 /
> 
> is permitted.  (Note that 4.3.1.1, line 25, explicitly states that "Any 
> integer value may be represented as a signed-int-literal-constant.")
> 

Brooks,

Can you open a PR?  I did not realize that there was
this hair splitting.  Oh, and this isn't going to be
easy to fix.

-- 
Steve


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]