The following constructs are imprecisely supported in flow analysis. They can be used safely but might lead to unprovable checks. Warnings can be emitted by GNATprove if the --info switch is used:

  • Aliasing checks might be spurious for actual parameters that are array components,

  • Global generation might wrongly classify an Output item as an In_Out for subprograms that call other subprograms with no Global contract,

  • Initialization of arrays inside FOR loops is only recognized when assignments to array element are directly indexed by the loopparameter,

  • Initialization of multi-dimensional array inside FOR loops is only recognized when array bounds are static,

  • Assignments to record objects might cause spurious data dependencies in some components of the assigned object.