>I was sufficently depressed by Keith's reporting that "Interp #1"
You put this in quotes and act like this is a new action .... it isn't
particularly new. I vaguely recall you even being involved in those days...
Here's the text, for those that don't have the entire interpretation
base memorized ;>
NUMBER: 000001
TITLE: Optimization of Fortran programs
KEYWORDS: expression - arithmetic, mathematical equivalence,
numeric operations, optimization
DEFECT TYPE: Interpretation
STATUS: Published
QUESTION: Given a fragment such as
10 SUM = A + B
20 D = SUM + C
does the standard allow the processor the freedom to replace this two statement
fragment with any of the following single statements:
100 D = (A + B) + C
110 D = A + (B + C)
120 D = (A + C) + B
130 D = (B + A) + C
140 D = C + (B + A)
ANSWER: The Fortran standard grants to processors an unlimited freedom to
reorganize and modify programs, provided only that the execution "fulfills the
interpretations herein" (1.4). In sections 7.1.7.1, 7.1.7.3, and elsewhere,
specific additional freedoms are granted processors in expression evaluation.
Generally speaking, all of these freedoms support what is called "optimization",
the altering of the program in some way that is thought to improve a specific
property, often performance, of the program.
In this particular case SUM, in statement 20, is not an expression, but a
reference to the result of a previous assignment. The additional freedoms
granted for expression evaluation do not apply. Thus only those processors that
can make the replacement and still "fulfill the interpretations herein" are
permitted to do so. For these processors the answer is yes, for all other
processors the answer is no.
The "interpretation herein" is that SUM is a primary (7.1.1.1) of the expression
"SUM + C" and the reference to SUM requires its value (Section 6, first
paragraph). The determination of SUM's value was specified by assignment
statement 10. The result of that assignment, with its possible conversions of
"A + B" to the type and type parameters of SUM, is the value of SUM. This is
the interpretation that must be fulfilled by conforming processors.
A common optimization for this fragment is to replace it by statements such as
100, 130, etc. where the calculation of A + B appears in parenthesis. This
replacement corresponds to the calculation of A + B in a temporary location
(i.e., a register) and then accessing that temporary location instead of storing
the result in SUM and then accessing that stored value.
EDITS: None.
SUBMITTED BY: J. C. Adams 119-JCA-2 (119.002)
HISTORY: 119-RL-1 (119.047)
92-044 S20.120A
92-104 Interpretation
92-147 m122 approved by a vote of 21-1
92-267r m123 Edit approved
Comments Accompanying Ballots on N865, Munchhausen,
Rolison and Shen
N881 WG5 approved.
However ballot comments led X3J3 to reconsider
93-132 m125 approved 18-4
93-255r1 m127 ballot failed 23-1
94-026r1 m128 proposed response (using 'freedom')
94-025r1 m128 proposed response (using 'freedoms') approved 17-2
94-116 m129 X3J3 ballot approved 22-1
N984 m131 WG5 approved
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|