7.2.6.3. Miscellaneous warnings reported by GNATprove

The following table shows default warnings reported by GNATprove outside of flow analysis and proof.

Warning Tag

Explanation

address-to-access-conversion

call to conversion function is assumed to return a valid access designating a valid value

alias-volatile-atomic-mismatch

aliased objects should both be volatile or non-volatile, and both be atomic or non-atomic

alias-volatile-prop-mismatch

aliased objects should have the same volatile properties

attribute-valid-always-true

attribute Valid is assumed to return True

auto-lemma-calls

the automatically instantiated lemma contains calls which cannot be arbitrarily specialized

auto-lemma-different

the automatically instantiated lemma contains calls to its associated function with different specializations

auto-lemma-higher-order

the automatically instantiated lemma is not annotated with Higher_Order_Specialization

auto-lemma-specializable

the automatically instantiated lemma does not contain any specializable calls to its associated function

initialization-to-alias

initialization of object is assumed to have no effects on other non-volatile objects

is-valid-returns-true

function Is_Valid is assumed to return True

generic-not-analyzed

GNATprove doesn’t analyze generics, only instances

no-possible-termination

procedure which does not return normally nor raises an exception cannot always terminate

no-check-message-justified

no check message justified by this pragma

proved-check-justified

only proved check messages justified by this pragma

deprecated-feature

Terminating, Always_Return, and Might_Not_Return annotations are ignored

deprecated-feature

External Axiomatizations are not supported anymore, ignored

ignored-pragma

pragma is ignored (it is not yet supported)

overflow-mode-ignored

pragma Overflow_Mode in code is ignored

precondition-statically-false

precondition is statically False

restriction-ignored

restriction is ignored (it is not yet supported)

unreferenced-function

analyzing unreferenced function

unreferenced-procedure

analyzing unreferenced procedure

useless-relaxed-init-func-result

function result annotated with Relaxed_Initialization cannot be partially initialized

useless-relaxed-init-object

object annotated with Relaxed_Initialization cannot be partially initialized

variant-no-recursion

no recursive call visible on subprogram with Subprogram_Variant

The following table shows warnings guaranteed to be reported by GNATprove.

Warning Tag

Explanation

assumed-always-terminates

no Always_Terminates aspect available for subprogram, subprogram is assumed to always terminate

assumed-global-null

no Global contract available for subprogram, null is assumed

imprecise-address-specification

object with an imprecisely supported address specification: non-atomic objects should not be accessed concurrently, volatile properties should be correct, indirect writes to object to and through potential aliases are ignored, and reads should be valid

The following warnings are disabled by default, and can be enabled collectively using switch --pedantic, or individually using switch -W.

Warning Tag

Explanation

image-attribute-length

string attribute has an implementation-defined length

operator-reassociation

possible operator reassociation due to missing parentheses

representation-attribute-value

representation attribute has an implementation-defined value