aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-sem_stmts.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdl/vhdl-sem_stmts.adb')
-rw-r--r--src/vhdl/vhdl-sem_stmts.adb8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/vhdl/vhdl-sem_stmts.adb b/src/vhdl/vhdl-sem_stmts.adb
index ca02e505f..70035c321 100644
--- a/src/vhdl/vhdl-sem_stmts.adb
+++ b/src/vhdl/vhdl-sem_stmts.adb
@@ -1308,12 +1308,14 @@ package body Vhdl.Sem_Stmts is
Loop_Stmt: Iir;
P : Iir;
begin
+ -- Analyze condition (if present).
Cond := Get_Condition (Stmt);
if Cond /= Null_Iir then
Cond := Sem_Condition (Cond);
Set_Condition (Stmt, Cond);
end if;
+ -- Analyze label.
Loop_Label := Get_Loop_Label (Stmt);
if Loop_Label /= Null_Iir then
Loop_Label := Sem_Denoting_Name (Loop_Label);
@@ -1339,6 +1341,12 @@ package body Vhdl.Sem_Stmts is
when Iir_Kind_While_Loop_Statement
| Iir_Kind_For_Loop_Statement =>
if Loop_Stmt = Null_Iir or else P = Loop_Stmt then
+ case Iir_Kinds_Next_Exit_Statement (Get_Kind (Stmt)) is
+ when Iir_Kind_Next_Statement =>
+ Set_Next_Flag (P, True);
+ when Iir_Kind_Exit_Statement =>
+ Set_Exit_Flag (P, True);
+ end case;
exit;
end if;
when Iir_Kind_If_Statement