From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.8 required=5.0 tests=BAYES_00,INVALID_DATE autolearn=no autolearn_force=no version=3.4.4 Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!watmath!clyde!burl!ulysses!allegra!mit-eddie!think!harvard!caip!lll-crg!lll-lcc!ucdavis!ucbvax!SU-SIERRA.ARPA!Bryan From: Bryan@SU-SIERRA.ARPA (Doug Bryan) Newsgroups: net.lang.ada Subject: pragmas Message-ID: <8605100458.AA10347@ucbvax.Berkeley.EDU> Date: Wed, 7-May-86 00:55:53 EDT Article-I.D.: ucbvax.8605100458.AA10347 Posted: Wed May 7 00:55:53 1986 Date-Received: Tue, 13-May-86 01:29:21 EDT Sender: daemon@ucbvax.BERKELEY.EDU Organization: The ARPA Internet List-Id: Sam, Yes, the language-defined (Appendix B) pragmas need not be "recognized" by an implementation, yet all language-defined pragmas must be "supported" by an implementation. Here "recognized" means implemented, the semantics hold; "supported" simply means that the existance of a language-defined pragma cannot make a compilation unit syntactically invalid. This is my interpretation. Let me tell you why: 2.8(8) ... language-defined pragmas "must be supported by every implementation." 2.8(11) "It is recommended (but not required) that implementations issue warnings for pragmas that are not recognized and therefore ignored." Par (11) says that an implementation may "ignore" a pragma. So here in 2.8 we see that there must be a difference between 'not support' and "ignore". 11.7(1) "The presence of a SUPPRESS pragma give permission to an implementation to omit curtain run-time checks." 11.7(3) "The permission to omit the given check extends ..." 11.7(20) "For curtain implementations, it may be impossible or too costly to suppress curtain checks. The corresponding SUPPRESS pragma can be ignored." 6.3.2(1) "The pragma INLINE is used to indicate that inline expansion of the subprogram body is desired for every call to each of the named subprograms." 6.3.2(4) "For each call of the named subprograms, an implementation is free to follow or to ignore the recommendation expressed by the pragma." It seems clear that the pragmas SUPPRESS and INLINE are optional. In the explination of other pragmas, for instance SHARED 9.11(9-11), the word "must" often appears and the reader does not get any indication that the pragma is optional. In such cases, one must revert back to 2.8(11). In these cases, 2.8(11) has precedence, and thus all pragmas are optional yet "supported". doug -------