aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/synth/synth-expr.adb6
-rw-r--r--src/synth/synth-static_oper.adb2
-rw-r--r--src/synth/synth-stmts.adb4
3 files changed, 11 insertions, 1 deletions
diff --git a/src/synth/synth-expr.adb b/src/synth/synth-expr.adb
index eb0357145..ecb5f199b 100644
--- a/src/synth/synth-expr.adb
+++ b/src/synth/synth-expr.adb
@@ -1780,12 +1780,18 @@ package body Synth.Expr is
end case;
Left := Synth_Expression_With_Type (Syn_Inst, Left_Expr, Typ);
+ if Left = null then
+ return null;
+ end if;
if Is_Static_Val (Left) and then Get_Static_Discrete (Left) = Val then
return Create_Value_Discrete (Val, Boolean_Type);
end if;
Strip_Const (Left);
Right := Synth_Expression_With_Type (Syn_Inst, Right_Expr, Typ);
+ if Right = null then
+ return null;
+ end if;
Strip_Const (Right);
-- Return a static value if both operands are static.
diff --git a/src/synth/synth-static_oper.adb b/src/synth/synth-static_oper.adb
index 511c72626..cb6fd0877 100644
--- a/src/synth/synth-static_oper.adb
+++ b/src/synth/synth-static_oper.adb
@@ -595,7 +595,7 @@ package body Synth.Static_Oper is
Error_Msg_Synth
(+Expr, "synth_static_dyadic_predefined: unhandled "
& Iir_Predefined_Functions'Image (Def));
- raise Internal_Error;
+ return null;
end case;
end Synth_Static_Dyadic_Predefined;
diff --git a/src/synth/synth-stmts.adb b/src/synth/synth-stmts.adb
index d7fe43c78..c40eaadc6 100644
--- a/src/synth/synth-stmts.adb
+++ b/src/synth/synth-stmts.adb
@@ -680,6 +680,10 @@ package body Synth.Stmts is
Phi_False : Phi_Type;
begin
Cond_Val := Synth_Expression (C.Inst, Cond);
+ if Cond_Val = null then
+ Set_Error (C.Inst);
+ return;
+ end if;
if Is_Static (Cond_Val) then
Strip_Const (Cond_Val);
if Cond_Val.Scal = 1 then