aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2021-04-05 09:37:50 +0200
committerTristan Gingold <tgingold@free.fr>2021-04-05 10:47:40 +0200
commit587497a48febf62e5c44d97796e78136c29d6d0c (patch)
tree945a0099a1fa1d3a9a35a4cdb26177a2ba189ae5 /src
parent88497515714305117625f50ec412c8479e79c243 (diff)
downloadghdl-587497a48febf62e5c44d97796e78136c29d6d0c.tar.gz
ghdl-587497a48febf62e5c44d97796e78136c29d6d0c.tar.bz2
ghdl-587497a48febf62e5c44d97796e78136c29d6d0c.zip
vhdl-sem_psl.adb: handle goto/equal repeated sequence. For #1708
Diffstat (limited to 'src')
-rw-r--r--src/vhdl/vhdl-sem_psl.adb28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/vhdl/vhdl-sem_psl.adb b/src/vhdl/vhdl-sem_psl.adb
index f6be38207..18141eeb8 100644
--- a/src/vhdl/vhdl-sem_psl.adb
+++ b/src/vhdl/vhdl-sem_psl.adb
@@ -505,15 +505,27 @@ package body Vhdl.Sem_Psl is
when N_Braced_SERE =>
return Sem_Sequence (Prop);
when N_Star_Repeat_Seq
- | N_Equal_Repeat_Seq
- | N_Plus_Repeat_Seq
+ | N_Plus_Repeat_Seq =>
+ declare
+ Seq : PSL_Node;
+ begin
+ Seq := Get_Sequence (Prop);
+ if Seq /= Null_PSL_Node then
+ Seq := Sem_Sequence (Seq);
+ Set_Sequence (Prop, Seq);
+ end if;
+ return Prop;
+ end;
+ when N_Equal_Repeat_Seq
| N_Goto_Repeat_Seq =>
- Res := Get_Sequence (Prop);
- if Res /= Null_PSL_Node then
- Res := Sem_Sequence (Get_Sequence (Prop));
- Set_Sequence (Prop, Res);
- end if;
- return Prop;
+ declare
+ B : PSL_Node;
+ begin
+ B := Get_Boolean (Prop);
+ B := Sem_Boolean (B);
+ Set_Boolean (Prop, B);
+ return Prop;
+ end;
when N_Always
| N_Never =>
-- By extension, clock_event is allowed within outermost