summaryrefslogtreecommitdiff
path: root/gcc/ada/sem_ch6.adb
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/ada/sem_ch6.adb')
-rw-r--r--gcc/ada/sem_ch6.adb28
1 files changed, 10 insertions, 18 deletions
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index 213f55addb9..992222198d7 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -1851,25 +1851,17 @@ package body Sem_Ch6 is
if Formal_Verification_Mode then
declare
- Stat : Node_Id := Last (Statements (HSS));
+ Stat : constant Node_Id :=
+ Last_Source_Node_In_Sequence (Statements (HSS));
begin
- while Present (Stat) loop
- if Comes_From_Source (Stat) then
- if not Nkind_In (Nkind (Stat),
- N_Simple_Return_Statement,
- N_Extended_Return_Statement)
- then
- Error_Msg_F ("|~~last statement in function "
- & "should be RETURN", N);
- end if;
- exit;
- end if;
-
- -- Reach before the generated statements at the end of
- -- the function.
-
- Stat := Prev (Stat);
- end loop;
+ if Present (Stat)
+ and then not Nkind_In (Nkind (Stat),
+ N_Simple_Return_Statement,
+ N_Extended_Return_Statement)
+ then
+ Error_Msg_F ("|~~last statement in function should "
+ & "be RETURN", Stat);
+ end if;
end;
elsif Return_Present (Id) then