aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGary Dismukes <dismukes@adacore.com>2017-04-27 08:45:22 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2017-04-27 10:45:22 +0200
commit0c3ef0cc2a5bbf36f5e2767301408d1d4eb510fa (patch)
treea5b9b65161e32f16d40bdf0f228b8193536fed02
parent985b839307f824880481ed840c4431bbae440073 (diff)
downloadgcc-0c3ef0cc2a5bbf36f5e2767301408d1d4eb510fa.zip
gcc-0c3ef0cc2a5bbf36f5e2767301408d1d4eb510fa.tar.gz
gcc-0c3ef0cc2a5bbf36f5e2767301408d1d4eb510fa.tar.bz2
exp_ch4.adb, [...]: Minor typo fix and reformatting.
2017-04-27 Gary Dismukes <dismukes@adacore.com> * exp_ch4.adb, sem_ch4.adb: Minor typo fix and reformatting. From-SVN: r247294
-rw-r--r--gcc/ada/ChangeLog4
-rw-r--r--gcc/ada/exp_ch4.adb9
-rw-r--r--gcc/ada/sem_ch4.adb114
3 files changed, 65 insertions, 62 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index c2bd562..5f25858 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2017-04-27 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch4.adb, sem_ch4.adb: Minor typo fix and reformatting.
+
2017-04-25 Arnaud Charlet <charlet@adacore.com>
* gnat_rm.texi, gnat_ugn.texi,
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index e2446e1..cf3f269 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -4869,11 +4869,10 @@ package body Exp_Ch4 is
else
if Generate_C_Code then
- -- We cannot ensure that correct C code will be generated if
- -- any temporary is created down the line (to e.g. handle
- -- checks or capture values) since we might end up with
- -- dangling references to local variables, so better be safe
- -- and reject the construct.
+ -- We cannot ensure that correct C code will be generated if any
+ -- temporary is created down the line (to e.g. handle checks or
+ -- capture values) since we might end up with dangling references
+ -- to local variables, so better be safe and reject the construct.
Error_Msg_N
("case expression too complex, use case statement instead", N);
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index 709bb34..d97bdbb 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -7521,20 +7521,20 @@ package body Sem_Ch4 is
is
Pref_Typ : constant Entity_Id := Etype (Prefix);
+ function Constant_Indexing_OK return Boolean;
+ -- Constant_Indexing is legal if there is no Variable_Indexing defined
+ -- for the type, or else node not a target of assignment, or an actual
+ -- for an IN OUT or OUT formal (RM 4.1.6 (11)).
+
function Expr_Matches_In_Formal
(Subp : Entity_Id;
Par : Node_Id) return Boolean;
-- Find formal corresponding to given indexed component that is an
-- actual in a call. Note that the enclosing subprogram call has not
- -- beenanalyzed yet, and the parameter list is not normalized, so
+ -- been analyzed yet, and the parameter list is not normalized, so
-- that if the argument is a parameter association we must match it
-- by name and not by position.
- function Constant_Indexing_OK return Boolean;
- -- Constant_Indexing is legal if there is no Variable_Indexing defined
- -- for the type, or else node not a target of assignment, or an actual
- -- for an IN OUT or OUT formal (RM 4.1.6 (11)).
-
function Find_Indexing_Operations
(T : Entity_Id;
Nam : Name_Id;
@@ -7544,56 +7544,6 @@ package body Sem_Ch4 is
-- interpretations. Flag Is_Constant should be set when the context is
-- constant indexing.
- -----------------------------
- -- Expr_Matches_In_Formal --
- -----------------------------
-
- function Expr_Matches_In_Formal
- (Subp : Entity_Id;
- Par : Node_Id) return Boolean
- is
- Actual : Node_Id;
- Formal : Node_Id;
-
- begin
- Formal := First_Formal (Subp);
- Actual := First (Parameter_Associations ((Parent (Par))));
-
- if Nkind (Par) /= N_Parameter_Association then
-
- -- Match by position.
-
- while Present (Actual) and then Present (Formal) loop
- exit when Actual = Par;
- Next (Actual);
-
- if Present (Formal) then
- Next_Formal (Formal);
-
- -- Otherwise this is a parameter mismatch, the error is
- -- reported elsewhere, or else variable indexing is implied.
-
- else
- return False;
- end if;
- end loop;
-
- else
- -- Match by name
-
- while Present (Formal) loop
- exit when Chars (Formal) = Chars (Selector_Name (Par));
- Next_Formal (Formal);
-
- if No (Formal) then
- return False;
- end if;
- end loop;
- end if;
-
- return Present (Formal) and then Ekind (Formal) = E_In_Parameter;
- end Expr_Matches_In_Formal;
-
--------------------------
-- Constant_Indexing_OK --
--------------------------
@@ -7653,7 +7603,7 @@ package body Sem_Ch4 is
end loop;
end;
- -- All interpretations have a matching in-formal.
+ -- All interpretations have a matching in-mode formal
return True;
@@ -7711,6 +7661,56 @@ package body Sem_Ch4 is
return True;
end Constant_Indexing_OK;
+ -----------------------------
+ -- Expr_Matches_In_Formal --
+ -----------------------------
+
+ function Expr_Matches_In_Formal
+ (Subp : Entity_Id;
+ Par : Node_Id) return Boolean
+ is
+ Actual : Node_Id;
+ Formal : Node_Id;
+
+ begin
+ Formal := First_Formal (Subp);
+ Actual := First (Parameter_Associations ((Parent (Par))));
+
+ if Nkind (Par) /= N_Parameter_Association then
+
+ -- Match by position
+
+ while Present (Actual) and then Present (Formal) loop
+ exit when Actual = Par;
+ Next (Actual);
+
+ if Present (Formal) then
+ Next_Formal (Formal);
+
+ -- Otherwise this is a parameter mismatch, the error is
+ -- reported elsewhere, or else variable indexing is implied.
+
+ else
+ return False;
+ end if;
+ end loop;
+
+ else
+ -- Match by name
+
+ while Present (Formal) loop
+ exit when Chars (Formal) = Chars (Selector_Name (Par));
+ Next_Formal (Formal);
+
+ if No (Formal) then
+ return False;
+ end if;
+ end loop;
+ end if;
+
+ return Present (Formal) and then Ekind (Formal) = E_In_Parameter;
+ end Expr_Matches_In_Formal;
+
------------------------------
-- Find_Indexing_Operations --
------------------------------