Next: Pragma Suppress_All, Previous: Pragma Subtitle, Up: Implementation Defined Pragmas
pragma Suppress (Identifier [, [On =>] Name]);
This is a standard pragma, and supports all the check names required in
the RM. It is included here because GNAT recognizes one additional check
name: Alignment_Check
which can be used to suppress alignment checks
on addresses used in address clauses. Such checks can also be suppressed
by suppressing range checks, but the specific use of Alignment_Check
allows suppression of alignment checks without suppressing other range checks.
Note that pragma Suppress gives the compiler permission to omit checks, but does not require the compiler to omit checks. The compiler will generate checks if they are essentially free, even when they are suppressed. In particular, if the compiler can prove that a certain check will necessarily fail, it will generate code to do an unconditional “raise”, even if checks are suppressed. The compiler warns in this case.
Of course, run-time checks are omitted whenever the compiler can prove that they will not fail, whether or not checks are suppressed.