From 916cadd8aa94741e770f28f9f09fe1f9b61062ea Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Tue, 13 Apr 2021 21:00:26 +0200 Subject: trans-chap9: handle N_Imp_Bool for PSL. For #1721 --- src/vhdl/translate/trans-chap9.adb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) 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; -- cgit v1.2.3