diff options
author | Tristan Gingold <tgingold@free.fr> | 2023-01-31 18:48:52 +0100 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2023-01-31 20:26:53 +0100 |
commit | cfab39c22b2ab2cf26bbeb3af2e68c22fb220ef3 (patch) | |
tree | e3630f9319db0f19b2bb70da9afc674cdaf77635 /src | |
parent | 00053acee65234c5d96c329e573f219d031c6aca (diff) | |
download | ghdl-cfab39c22b2ab2cf26bbeb3af2e68c22fb220ef3.tar.gz ghdl-cfab39c22b2ab2cf26bbeb3af2e68c22fb220ef3.tar.bz2 ghdl-cfab39c22b2ab2cf26bbeb3af2e68c22fb220ef3.zip |
PSL: optimize True for goto_repeat
Diffstat (limited to 'src')
-rw-r--r-- | src/psl/psl-rewrites.adb | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/src/psl/psl-rewrites.adb b/src/psl/psl-rewrites.adb index 7130507a2..13f555c68 100644 --- a/src/psl/psl-rewrites.adb +++ b/src/psl/psl-rewrites.adb @@ -111,7 +111,9 @@ package body PSL.Rewrites is return N; when N_HDL_Expr => return Get_HDL_Hash (N); - when N_HDL_Bool => + when N_HDL_Bool + | N_True + | N_False => return N; when others => Error_Kind ("rewrite_boolean", N); @@ -198,8 +200,13 @@ package body PSL.Rewrites is is Res : Node; begin - -- b[->] --> {(~b)[*];b} - Res := Build_Concat (Build_Star (Build_Bool_Not (B)), B); + if B /= True_Node then + -- b[->] --> {(~b)[*];b} + Res := Build_Concat (Build_Star (Build_Bool_Not (B)), B); + else + -- TRUE[->] --> TRUE + Res := True_Node; + end if; if Lo = Null_Node then return Res; @@ -213,8 +220,13 @@ package body PSL.Rewrites is is Res : Node; begin - -- b[->] --> {(~b)[*];b} - Res := Build_Concat (Build_Star (Build_Bool_Not (B)), B); + if B /= True_Node then + -- b[->] --> {(~b)[*];b} + Res := Build_Concat (Build_Star (Build_Bool_Not (B)), B); + else + -- TRUE[->] --> TRUE + Res := True_Node; + end if; -- b[->l:h] --> {b[->]}[*l:h] return Rewrite_Star_Repeat_Seq (Res, Lo, Hi); |