[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference hylndr::dclreview

Title:DCLREVIEW
Moderator:HYLNDR::SYSTEM
Created:Sun Apr 19 1987
Last Modified:Fri May 23 1997
Last Successful Update:Fri Jun 06 1997
Number of topics:773
Total number of notes:5391

698.0. "/IEEE_MODE for DEC C AXP VMS" by DECC::CARLSON () Mon Mar 07 1994 16:33

T.RTitleUserPersonal
Name
DateLines
698.1Update to this behaviorDECC::VOGELThu Jan 16 1997 11:0134
698.2TLE::REAGANAll of this chaos makes perfect senseThu Jan 16 1997 16:223
698.3QUARK::LIONELFree advice is worth every centFri Jan 24 1997 09:324
It matches the Fortran behavior?  I don't see Fortran doing this (though I
think it's a fine idea.)

				Steve
698.4More changesDECC::VOGELFri Jan 24 1997 10:3432
    This becomes more interesting. I just talked to Steve and
    we found that F77 issues the informational only if the non-default
    value of /IEEE is specified. F90 never issues any message.

    Also both C and Fortran compilers have a related qualifier /ROUNDING_MODE. 
    This qualifier also impacts IEEE behavior only. Currently the
    Fortran compilers issue no message if /ROUNDING_MODE is specified
    without /FLOAT=IEEE. Currently DEC C (and DEC C++) issue an -E-
    level message.

    Steve and I both agreed on the following:

    .DEC C/C++ should go with the proposal in .1

    .DEC C/C++ should be modified so that if /ROUNDING_MODE is specified
     without /FLOAT=IEEE, the message:

	%CC-I-QUACONFL1, /ROUNDING_MODE qualifier implies /FLOAT=IEEE

     will be output instead of the -E- level message DEC C/C++ outputs today.
     This makes /ROUNDING_MODE consistent with /IEEE.

    .The Fortran compilers will be modified (at some point) to issue 
     informationals for all /IEEE values and for /ROUNDING_MODE if
     /FLOAT=IEEE is not specified.
    

    Steve, correct me if I'm wrong.

						Ed

698.5How about /machine_code implying /list?CXXC::REPETERich Peterson 381-1802 ZKO2-3/N30Fri Jan 24 1997 11:5517
RE .2:

> Way cool!

RE .3:

> I think it's a fine idea.

The proposal suggests that explicitly specifying a qualifier
that only makes sense when another qualifier is specified with
non-default value ought to issue an informational and turn
on the non-default value if that other qualifier was defaulted.

So do Pascal and Fortran agree that if /machine_code is specified
without /list, we should issue an informational and turn on /list?
Lots of people would like that, but if only one of the compilers
did it, I imagine there'd be some grumbling.
698.6CXXC::REINIGThis too shall changeFri Jan 24 1997 12:081
    Oh yes please.  
698.7TLE::REAGANAll of this chaos makes perfect senseMon Jan 27 1997 08:4811
    It isn't quite the same.  With /MACHINE_CODE without /LIST, you
    won't get an object file that does one thing, but you think it
    does something else.
    
    I view this more like the compiler's producing a message with
    /DEBUG and the default optimization.  We're telling you that you
    might be surprised at some point in the future with your choices
    in qualifiers.  The /MACHINE_CODE without /LIST isn't a silent
    killer.
    
    				-John
698.8QUARK::LIONELFree advice is worth every centMon Jan 27 1997 16:1610
We've had a long-standing "rule" that one qualifier doesn't affect another,
but that rule has been broken many times by many products.  For example,
Alpha Fortran has /FAST and /VMS which affect several other qualifiers. (The
VAX compiler doesn't have any such interactions, as far as I know.)

Thinking about this some more, I'm not entirely comfortable with the idea of
interactions like this.  I'd feel better about just giving a "conflict" error
and let the user specify things explicitly.

					Steve
698.9DECC::VOGELWed Jan 29 1997 11:2313
    Steve,
    
>Thinking about this some more, I'm not entirely comfortable with the idea of
>interactions like this.  I'd feel better about just giving a "conflict" error
>and let the user specify things explicitly.

    This would mean "breaking" existing Fortran applications that
    currently issue the informational. Do you really want to do this?
    
    					Ed
    
    
698.10Not identically the same, but very similarCXXC::REPETERich Peterson 381-1802 ZKO2-3/N30Fri Jan 31 1997 12:2324
RE .7:

> With /MACHINE_CODE without /LIST, you won't get an object file that
> does one thing, but you think it does something else.

True, but it's quite likely you'll get a listing file that shows
machine code that doesn't have anything to do with the object
module you just generated - i.e. the previous version of the listing
file that got generated the last time you actually remembered to
specify /list in addition to /machine_code.

> The /MACHINE_CODE without /LIST isn't a silent killer.

Unless the /ieee application fails or produces inaccurate information
affecting a life-threatening situation, it doesn't kill anything other
than people's time.  And that's exactly the effect of silently allowing
a developer to analyze generated machine code that doesn't correspond
to the object module produced.  Do you get the sense I've killed some
time doing this myself :-)?

I don't think it's all that critical how the conflict gets resolved
(either in terms of which qualifier wins, or even making it a fatal
error), but *silently* producing a surprising result that virtually
every user trips on at some point seems hard to justify.
698.11TLE::REAGANAll of this chaos makes perfect senseFri Jan 31 1997 17:1321
    The compilers have been very inconsistent on these topics.
    
    For example, on VAX, DEC Pascal always produces an object file
    even if the compilation had errors (the object file is a "minimal"
    object file with a severity set to "E").  We did this so you wouldn't
    just pick up an older .OBJ file lying around from when you didn't
    have syntax errors.  This is the arguement you use in .10 about
    reading old .LIS files that don't match the current compilation.
    However, on VAX, DEC Pascal has been beat up continually over the
    years about our always generating .OBJ files (it confused MMS
    into thinking the compilation was successful).  All the other 
    VAX-based compilers delete don't produce an .OBJ file when there 
    were syntax errors.  If you aren't watching (or have badly written 
    DCL command files, etc.) you can just pick up the old .OBJ file and 
    get real confused.
    
    Thats not to say one is right and the other is wrong, but both
    sides have value.  The behavior of /MACHINE without /LIST had
    been around forever.
    
    				-John