summaryrefslogtreecommitdiff
path: root/simulate/execution.adb
diff options
context:
space:
mode:
authorTristan Gingold2014-09-03 04:41:55 +0200
committerTristan Gingold2014-09-03 04:41:55 +0200
commit6d8c5299f20b4cd8f1e049f7eea454c00a3102b7 (patch)
treee06fd1ab55f2398d2e121ad6d7a7b3236aaeda6b /simulate/execution.adb
parente6ffb98cb5ad3f07bcaf79323d8ab8411688c494 (diff)
downloadghdl-6d8c5299f20b4cd8f1e049f7eea454c00a3102b7.tar.gz
ghdl-6d8c5299f20b4cd8f1e049f7eea454c00a3102b7.tar.bz2
ghdl-6d8c5299f20b4cd8f1e049f7eea454c00a3102b7.zip
Fix ghdl_simul (after previous change).
Diffstat (limited to 'simulate/execution.adb')
-rw-r--r--simulate/execution.adb14
1 files changed, 8 insertions, 6 deletions
diff --git a/simulate/execution.adb b/simulate/execution.adb
index d82f32f..af34e96 100644
--- a/simulate/execution.adb
+++ b/simulate/execution.adb
@@ -2968,6 +2968,9 @@ package body Execution is
Error_Msg_Constraint (Expr);
return null;
+ when Iir_Kind_Parenthesis_Expression =>
+ return Execute_Expression (Block, Get_Expression (Expr));
+
when Iir_Kind_Type_Conversion =>
return Execute_Type_Conversion
(Block, Expr,
@@ -4297,7 +4300,8 @@ package body Execution is
Stmt : Iir)
is
begin
- Destroy_Iterator_Declaration (Instance, Get_Iterator_Scheme (Stmt));
+ Destroy_Iterator_Declaration
+ (Instance, Get_Parameter_Specification (Stmt));
end Finalize_For_Loop_Statement;
procedure Finalize_Loop_Statement (Instance : Block_Instance_Acc;
@@ -4313,15 +4317,13 @@ package body Execution is
is
Instance : constant Block_Instance_Acc := Proc.Instance;
Stmt : constant Iir_For_Loop_Statement := Instance.Stmt;
+ Iterator : constant Iir := Get_Parameter_Specification (Stmt);
Bounds : Iir_Value_Literal_Acc;
- Iterator : Iir;
Index : Iir_Value_Literal_Acc;
Stmt_Chain : Iir;
Is_Nul : Boolean;
Marker : Mark_Type;
begin
- Iterator := Get_Iterator_Scheme (Stmt);
-
-- Elaborate the iterator (and its type).
Elaborate_Declaration (Instance, Iterator);
@@ -4355,7 +4357,7 @@ package body Execution is
function Finish_For_Loop_Statement (Instance : Block_Instance_Acc)
return Boolean
is
- Iterator : constant Iir := Get_Iterator_Scheme (Instance.Stmt);
+ Iterator : constant Iir := Get_Parameter_Specification (Instance.Stmt);
Bounds : Iir_Value_Literal_Acc;
Index : Iir_Value_Literal_Acc;
Marker : Mark_Type;
@@ -4459,7 +4461,7 @@ package body Execution is
is
Instance : constant Block_Instance_Acc := Proc.Instance;
Stmt : constant Iir := Instance.Stmt;
- Label : constant Iir := Get_Loop (Stmt);
+ Label : constant Iir := Get_Named_Entity (Get_Loop_Label (Stmt));
Cond : Boolean;
Parent : Iir;
begin