summaryrefslogtreecommitdiff
path: root/gcc/ada/gnat1drv.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2011-09-27 12:03:09 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2011-09-27 12:03:09 +0200
commitda124b6afd64364d321813cee77442a1de624ec5 (patch)
tree119eb2e20370d17d8cd10aad56e8c0dc1560c851 /gcc/ada/gnat1drv.adb
parent706a4067b883765331b693caded5f08a43eb2645 (diff)
downloadgcc-da124b6afd64364d321813cee77442a1de624ec5.tar.gz
[multiple changes]
2011-09-27 Robert Dewar <dewar@adacore.com> * a-comutr.ads: Minor reformatting. 2011-09-27 Ed Schonberg <schonberg@adacore.com> * a-cimutr.adb, a-cimutr.ads, a-cbmutr.adb, a-cbmutr.ads: Add children iterators to multiway trees. 2011-09-27 Yannick Moy <moy@adacore.com> * debug.adb (d.D): New option for strict Alfa mode. * opt.ads (Strict_Alfa_Mode): New flag to interpret compiler permissions as strictly as possible. * sem_ch3.adb (Signed_Integer_Type_Declaration): In non-strict Alfa mode, now, interpret ranges of base types like GNAT does; in strict mode, simply change the range of the implicit base Itype. * gnat1drv.adb: Update comments. Set Strict_Alfa_Mode. From-SVN: r179258
Diffstat (limited to 'gcc/ada/gnat1drv.adb')
-rw-r--r--gcc/ada/gnat1drv.adb18
1 files changed, 14 insertions, 4 deletions
diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb
index bf811eb5fb5..57456cc67ff 100644
--- a/gcc/ada/gnat1drv.adb
+++ b/gcc/ada/gnat1drv.adb
@@ -392,6 +392,12 @@ procedure Gnat1drv is
Alfa_Mode := True;
+ -- Set strict standard interpretation of compiler permissions
+
+ if Debug_Flag_Dot_DD then
+ Strict_Alfa_Mode := True;
+ end if;
+
-- Turn off inlining, which would confuse formal verification output
-- and gain nothing.
@@ -428,6 +434,8 @@ procedure Gnat1drv is
Debug_Generated_Code := False;
-- Turn cross-referencing on in case it was disabled (e.g. by -gnatD)
+ -- as it is needed for computing effects of subprograms in the formal
+ -- verification backend.
Xref_Active := True;
@@ -473,13 +481,15 @@ procedure Gnat1drv is
Warning_Mode := Suppress;
- -- Suppress the generation of name tables for enumerations
- -- why???
+ -- Suppress the generation of name tables for enumerations, which are
+ -- not needed for formal verification, and fall outside the Alfa
+ -- subset (use of pointers).
Global_Discard_Names := True;
- -- Suppress the expansion of tagged types and dispatching calls
- -- why???
+ -- Suppress the expansion of tagged types and dispatching calls,
+ -- which lead to the generation of non-Alfa code (use of pointers),
+ -- which is more complex to formally verify than the original source.
Tagged_Type_Expansion := False;
end if;