6.4 RM 2.8(16): Pragmas

"Normally, implementation-defined pragmas should have no semantic effect for error-free programs; that is, if the implementation-defined pragmas are removed from a working program, the program should still be legal, and should still have the same semantics."

The following implementation defined pragmas are exceptions to this rule:

PragmaExplanation
`Abort_Defer'Affects semantics
`Ada_83'Affects legality
`Assert'Affects semantics
`CPP_Class'Affects semantics
`CPP_Constructor'Affects semantics
`Debug'Affects semantics
`Interface_Name'Affects semantics
`Machine_Attribute'Affects semantics
`Unimplemented_Unit'Affects legality
`Unchecked_Union'Affects semantics

In each of the above cases, it is essential to the purpose of the pragma that this advice not be followed. For details see Implementation Defined Pragmas.