next up previous
Next: Adding a new Up: adding a directive/assertion Previous: adding a directive/assertion

Terminology

In the Polaris terminology, a directive is a specially-formatted comment, having special meaning to a Fortran compiler, which appears in a source file with Fortran code. It is the external embodiment of a particular piece of information. The external forms change depending on the output language which Polaris is generating.

The internal representation of the information is independent of the output language specified. The internal form of each piece of information corresponding to the directives is called an assertion. Some parts of Polaris use these assertions to communicate information to other parts.

Assertions are attached to Fortran statements in an AssertionList object. When Polaris finally generates output, the assertions in the AssertionList for each statement are turned into directives for the specific output language being specified and are placed into either the pre_directives list or the post_directives list on the statement, which determines whether the particular directive prints before or after the given Fortran statement.

One example of an assertion is the parallel loop assertion (an assertion of type AS_PARALLEL). The data dependence tester ( ddtest) will attach an assertion of type AS_PARALLEL to a DO statement when it finds that the loop can be run in parallel. Depending on the output language specified, the parallel assertion will be converted into a C$DOACROSS directive for the SGI Power Challenge, or C$DIR FORCE_PARALLEL for the Convex C3, or CSRD$ PARALLEL for the generic CSRD output language, to name just three possibilities.



Jay Hoeflinger
Mon Apr 21 11:52:18 CDT 1997