From 50f95f658d69d7c3ab1369e14ac64e3f6bf0bd0e Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Mon, 25 Jul 2022 08:04:59 +0200 Subject: vhdl-canon: handle conditional variable assignment. Fix #2138 --- src/vhdl/vhdl-canon.adb | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src/vhdl/vhdl-canon.adb') diff --git a/src/vhdl/vhdl-canon.adb b/src/vhdl/vhdl-canon.adb index 0f2b2a494..edddfc721 100644 --- a/src/vhdl/vhdl-canon.adb +++ b/src/vhdl/vhdl-canon.adb @@ -477,6 +477,22 @@ package body Vhdl.Canon is (Get_Target (Stmt), List, True); Canon_Extract_Sensitivity_Expression (Get_Expression (Stmt), List, False); + when Iir_Kind_Conditional_Variable_Assignment_Statement => + declare + Ce : Iir; + begin + Canon_Extract_Sensitivity_Expression + (Get_Target (Stmt), List, True); + Ce := Get_Conditional_Expression_Chain (Stmt); + while Ce /= Null_Iir loop + Canon_Extract_Sensitivity_Expression + (Get_Condition (Ce), List, False); + Canon_Extract_Sensitivity_Expression + (Get_Expression (Ce), List, False); + Ce := Get_Chain (Ce); + end loop; + end; + when Iir_Kind_Simple_Signal_Assignment_Statement => -- LRM08 11.3 -- See variable assignment statement case. @@ -560,7 +576,6 @@ package body Vhdl.Canon is Canon_Extract_Sensitivity_Procedure_Call (Get_Procedure_Call (Stmt), List); when Iir_Kind_Selected_Waveform_Assignment_Statement - | Iir_Kind_Conditional_Variable_Assignment_Statement | Iir_Kind_Signal_Force_Assignment_Statement | Iir_Kind_Signal_Release_Assignment_Statement | Iir_Kind_Break_Statement -- cgit v1.2.3