pr25039 Frontend problem?

Jerry DeLisle jvdelisle@verizon.net
Mon Nov 28 20:59:00 GMT 2005


Richard E Maine wrote:
> On Nov 25, 2005, at 9:00 PM, Jerry DeLisle wrote:
> 
>> Steve Kargl wrote:
>>
>>> On Fri, Nov 25, 2005 at 05:38:36PM -0800, Jerry DeLisle wrote:
>>>
>>>> Could someone take a look at -fdump-tree-original and confirm if 
>>>> this is a frontend problem.  I think this is a regression with this 
>>>> unprintable chracter showing up in the struct statement.
>>>>
>>> Is "1,1" valid input (where I'm using quotes because space is 
>>> important)?
>>> The read statement is READ(5,'(2i9)') I1,I2.  This is expecting 2 
>>> integers
>>> where the width of each integer field is 9 characters.  "1,1" is 3
>>> characters.  It's been awhile since I looked at what a comma does
>>> in formatted input (I normally do unformatted input).  Does a comma
>>> short-circuit a field width?
>>
>> Thats what I thought, that the spaces mattered. Well g77 and ifort 
>> accept the input and evidently a comma does short-circuit the field 
>> width.
> 
> 
> The standard says that a comma does *NOT* short-circuit the field width 
> in an explicit format. (By the way, I assume that the above reference to 
> "unformatted" actually refers to list-directed formatting. Please, 
> list-directed is a specific case of formatted input; it is *NOT* 
> unformatted. I have helped multiple people fix buggy code caused by this 
> misuse of terminology; they open a file with form='unformatted' because 
> they intend to use list-directed I/O on it).
> 
> I *DESPISE* compilers that short-circuit explicit field widths like 
> this. What "ought" to happen (according to my expectations) is that 
> hitting a comma in a numeric field should be an error condition that is 
> reported via iostat= and err= as appropriate. User code "ought" to be 
> able to count on this as a way to detect such thngs. The only way that 
> such compilers can even pretend to be standard-conforming is by 
> appealing to the fact that the standard says it does not define the set 
> of error conditions. Thus, it turns out, user code can never actually 
> rely on using iostat= constructively for such purposes. The compilers 
> that implement this abomination can claim that the user code was 
> non-conforming and thus the compiler is free to do anything with it. 
> Have I mentioned how much I hate such compilers? I consider them to be 
> squeezing by on a technicality, but failing to implement what I consider 
> to be the spirit of the standard on this.
> 
> If you feel that you have to implement this abomination, at least make 
> it switch controllable.  (And preferably default it to acting like the 
> standard would lead a reasonable person to expect.) Please?
> 
> I think I have mentioned before that I fear gfortran is going too far in 
> the direction of accepting every strange nonstandard feature out there. 
> In my personal opinion, that isn't the path to follow to get a robust 
> and user-friendly compiler. This particular feature favors the arcane 
> over the straightforward interpretation of the standard. Yes, it 
> actually makes user codes that assume the straightforward interpretation 
> fail. I once had some such codes, but I subsequently had to abandon the 
> practice because the codes failed on compilers that implemented this 
> particular misfeature.
> 
Wow, thanks for clarifying that.  I do have a patch in review that implements 
this abomination.  And I agree with you mostly (99%).  It has been frustrating 
me lately because at least two bugs we have reported are of this nature.  The 
first one I suggested to the user to use proper array triplet qualifiers to 
solve his namelist problem.  He was happy to do that.

On pr25039 we are giving an error now.  I could set it up to give a clearer 
error, that commas are not allowed in numeric input strings and then enable the 
abomination for -std=legacy.

Anyone (everyone?) agreeable to what I propose here?

--Jerry



More information about the Fortran mailing list