When run in GNATprove mode, the frontend should still issue errors related
to wrong sizes for representation clauses and pragma Pack. As the target
machine can be specified with -gnatet, there is no need to ignore such
errors anymore.
Tested on x86_64-pc-linux-gnu, committed on trunk
2014-01-21 Yannick Moy <[email protected]>
* errout.adb (Special_Msg_Delete): Update comment. Remove
special case for GNATprove which should not ignore mismatch
in sizes for representation clauses.
* sem_prag.adb (Analyze_Pragma): Remove special case for GNATprove
which should not ignore pragma Pack.
Index: sem_prag.adb
===================================================================
--- sem_prag.adb (revision 206844)
+++ sem_prag.adb (working copy)
@@ -16168,11 +16168,11 @@
if not Rep_Item_Too_Late (Typ, N) then
- -- In the context of static code analysis, we do not need
- -- complex front-end expansions related to pragma Pack,
- -- so disable handling of pragma Pack in these cases.
+ -- In CodePeer mode, we do not need complex front-end
+ -- expansions related to pragma Pack, so disable handling
+ -- of pragma Pack.
- if CodePeer_Mode or GNATprove_Mode then
+ if CodePeer_Mode then
null;
-- Don't attempt any packing for VM targets. We possibly
Index: errout.adb
===================================================================
--- errout.adb (revision 206841)
+++ errout.adb (working copy)
@@ -2976,13 +2976,13 @@
elsif Msg = "size for& too small, minimum allowed is ^" then
- -- Suppress "size too small" errors in CodePeer mode and SPARK mode,
- -- since pragma Pack is also ignored in these configurations.
+ -- Suppress "size too small" errors in CodePeer mode, since code may
+ -- be analyzed in a different configuration than the one used for
+ -- compilation. Even when the configurations match, this message
+ -- may be issued on correct code, because pragma Pack is ignored
+ -- in CodePeer mode.
- -- At least the comment is bogus, since you can have this message
- -- with no pragma Pack in sight! ???
-
- if CodePeer_Mode or GNATprove_Mode then
+ if CodePeer_Mode then
return True;
-- When a size is wrong for a frozen type there is no explicit size