diff options
author | Tristan Gingold <tgingold@free.fr> | 2016-10-21 08:50:52 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2016-11-01 13:11:42 +0100 |
commit | d5f2c69f322973e62d4bd61cd659317397efd4bc (patch) | |
tree | dd937d4b86d31b755474d30970b35ed7fe63d648 /src/vhdl/translate/trans_analyzes.adb | |
parent | a98d989710eec4b44d2532bd31c8fbba209c8172 (diff) | |
download | ghdl-d5f2c69f322973e62d4bd61cd659317397efd4bc.tar.gz ghdl-d5f2c69f322973e62d4bd61cd659317397efd4bc.tar.bz2 ghdl-d5f2c69f322973e62d4bd61cd659317397efd4bc.zip |
Add translation for selected signal assignment.
Diffstat (limited to 'src/vhdl/translate/trans_analyzes.adb')
-rw-r--r-- | src/vhdl/translate/trans_analyzes.adb | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/vhdl/translate/trans_analyzes.adb b/src/vhdl/translate/trans_analyzes.adb index 427989935..93701819e 100644 --- a/src/vhdl/translate/trans_analyzes.adb +++ b/src/vhdl/translate/trans_analyzes.adb @@ -66,7 +66,7 @@ package body Trans_Analyzes is Status : Walk_Status; pragma Unreferenced (Status); begin - case Get_Kind (Stmt) is + case Iir_Kinds_Sequential_Statement (Get_Kind (Stmt)) is when Iir_Kind_Simple_Signal_Assignment_Statement => Extract_Has_After (Get_Waveform_Chain (Stmt)); Status := Walk_Assignment_Target @@ -83,6 +83,18 @@ package body Trans_Analyzes is Status := Walk_Assignment_Target (Get_Target (Stmt), Extract_Driver_Target'Access); end; + when Iir_Kind_Selected_Waveform_Assignment_Statement => + declare + Swf : Iir; + begin + Swf := Get_Selected_Waveform_Chain (Stmt); + while Swf /= Null_Iir loop + Extract_Has_After (Get_Associated_Chain (Swf)); + Swf := Get_Chain (Swf); + end loop; + Status := Walk_Assignment_Target + (Get_Target (Stmt), Extract_Driver_Target'Access); + end; when Iir_Kind_Procedure_Call_Statement => declare Call : constant Iir := Get_Procedure_Call (Stmt); @@ -109,7 +121,19 @@ package body Trans_Analyzes is Next_Association_Interface (Assoc, Inter); end loop; end; - when others => + when Iir_Kind_Null_Statement + | Iir_Kind_Assertion_Statement + | Iir_Kind_Report_Statement + | Iir_Kind_Wait_Statement + | Iir_Kind_Return_Statement + | Iir_Kind_Next_Statement + | Iir_Kind_Exit_Statement + | Iir_Kind_Variable_Assignment_Statement + | Iir_Kind_Conditional_Variable_Assignment_Statement + | Iir_Kind_For_Loop_Statement + | Iir_Kind_While_Loop_Statement + | Iir_Kind_Case_Statement + | Iir_Kind_If_Statement => null; end case; return Walk_Continue; |