aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/gnat1drv.adb24
-rw-r--r--gcc/ada/restrict.adb6
-rw-r--r--gcc/ada/sem.adb4
4 files changed, 28 insertions, 11 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 5235631..b66d29f 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2015-10-23 Arnaud Charlet <charlet@adacore.com>
+
+ * gnat1drv.adb (Adjust_Global_Switches): Adjust settings.
+ * sem.adb (Semantics): Remove special case.
+
2015-10-23 Gary Dismukes <dismukes@adacore.com>
* bindgen.adb, restrict.adb: Minor spelling/grammar fixes.
diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb
index bd3af2e..88cc9c0 100644
--- a/gcc/ada/gnat1drv.adb
+++ b/gcc/ada/gnat1drv.adb
@@ -136,17 +136,34 @@ procedure Gnat1drv is
Unnest_Subprogram_Mode := True;
end if;
- -- -gnatd.V or -gnatd.u enables special C expansion mode
+ -- -gnatd.u enables special C expansion mode
- if Debug_Flag_Dot_VV or Debug_Flag_Dot_U then
+ if Debug_Flag_Dot_U then
Modify_Tree_For_C := True;
end if;
- -- Other flags set if we are generating C code
+ -- Set all flags required when generating C code (-gnatd.V)
if Debug_Flag_Dot_VV then
Generate_C_Code := True;
+ Modify_Tree_For_C := True;
Unnest_Subprogram_Mode := True;
+
+ -- Enable some restrictions systematically to simplify the generated
+ -- code. Note that restriction checks are also disabled in C mode,
+ -- see Restrict.Check_Restriction.
+
+ Restrict.Restrictions.Set (No_Exception_Registration) := True;
+ Restrict.Restrictions.Set (No_Initialize_Scalars) := True;
+ Restrict.Restrictions.Set (No_Task_Hierarchy) := True;
+ Restrict.Restrictions.Set (No_Abort_Statements) := True;
+ Restrict.Restrictions.Set (Max_Asynchronous_Select_Nesting) := True;
+ Restrict.Restrictions.Value (Max_Asynchronous_Select_Nesting) := 0;
+
+ -- Set operating mode to Generate_Code to benefit from full front-end
+ -- expansion (e.g. generics).
+
+ Operating_Mode := Generate_Code;
end if;
-- -gnatd.E sets Error_To_Warning mode, causing selected error messages
@@ -229,6 +246,7 @@ procedure Gnat1drv is
-- user specified Restrictions pragmas are ignored, see
-- Sem_Prag.Process_Restrictions_Or_Restriction_Warnings.
+ Restrict.Restrictions.Set (No_Exception_Registration) := True;
Restrict.Restrictions.Set (No_Initialize_Scalars) := True;
Restrict.Restrictions.Set (No_Task_Hierarchy) := True;
Restrict.Restrictions.Set (No_Abort_Statements) := True;
diff --git a/gcc/ada/restrict.adb b/gcc/ada/restrict.adb
index b63b426..aaaaf40 100644
--- a/gcc/ada/restrict.adb
+++ b/gcc/ada/restrict.adb
@@ -505,16 +505,14 @@ package body Restrict is
-- In GNATprove mode restrictions are checked, except for
-- No_Initialize_Scalars, which is implicitly set in gnat1drv.adb.
- -- Just checking, SPARK does not allow restrictions to be set ???
-
if CodePeer_Mode
or else (GNATprove_Mode and then R = No_Initialize_Scalars)
then
return;
end if;
- -- In SPARK mode, issue an error for any use of class-wide, even if the
- -- No_Dispatch restriction is not set.
+ -- In SPARK 05 mode, issue an error for any use of class-wide, even if
+ -- the No_Dispatch restriction is not set.
if R = No_Dispatch then
Check_SPARK_05_Restriction ("class-wide is not allowed", N);
diff --git a/gcc/ada/sem.adb b/gcc/ada/sem.adb
index a6f1be1..819bcd5 100644
--- a/gcc/ada/sem.adb
+++ b/gcc/ada/sem.adb
@@ -1446,10 +1446,6 @@ package body Sem is
or else Debug_Flag_X
- -- Or if we are generating C code
-
- or else Generate_C_Code
-
-- Or if in configuration run-time mode. We do this so we get
-- error messages about missing entities in the run-time even
-- if we are compiling in -gnatc (no code generation) mode.