aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2021-04-13 21:00:26 +0200
committerTristan Gingold <tgingold@free.fr>2021-04-13 21:00:26 +0200
commit916cadd8aa94741e770f28f9f09fe1f9b61062ea (patch)
tree660141d75cad62fcbad754a061552abbe1147ab1
parent1a5f5a4178a3529c0e96cb45801fb4c41e5f6fd8 (diff)
downloadghdl-916cadd8aa94741e770f28f9f09fe1f9b61062ea.tar.gz
ghdl-916cadd8aa94741e770f28f9f09fe1f9b61062ea.tar.bz2
ghdl-916cadd8aa94741e770f28f9f09fe1f9b61062ea.zip
trans-chap9: handle N_Imp_Bool for PSL. For #1721
-rw-r--r--src/vhdl/translate/trans-chap9.adb21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/vhdl/translate/trans-chap9.adb b/src/vhdl/translate/trans-chap9.adb
index 493500548..bea87eff6 100644
--- a/src/vhdl/translate/trans-chap9.adb
+++ b/src/vhdl/translate/trans-chap9.adb
@@ -426,6 +426,27 @@ package body Trans.Chap9 is
(ON_Or,
Translate_Psl_Expr (Get_Left (Expr), Eos),
Translate_Psl_Expr (Get_Right (Expr), Eos));
+ when N_Imp_Bool =>
+ -- Equivalent to (not (a) or (b)) so this is a short-cut
+ -- operation.
+ declare
+ Bool : constant O_Tnode :=
+ Get_Ortho_Type (Boolean_Type_Definition, Mode_Value);
+ L : O_Dnode;
+ If_Blk : O_If_Block;
+ begin
+ L := Create_Temp (Bool);
+ New_Assign_Stmt
+ (New_Obj (L), Translate_Psl_Expr (Get_Left (Expr), Eos));
+ Start_If_Stmt (If_Blk, New_Obj_Value (L));
+ New_Assign_Stmt
+ (New_Obj (L), Translate_Psl_Expr (Get_Right (Expr), Eos));
+ New_Else_Stmt (If_Blk);
+ New_Assign_Stmt
+ (New_Obj (L), New_Lit (Std_Boolean_True_Node));
+ Finish_If_Stmt (If_Blk);
+ return New_Obj_Value (L);
+ end;
when others =>
Error_Kind ("translate_psl_expr", Expr);
end case;