aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-nodes_walk.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-07-14 06:10:00 +0200
committerTristan Gingold <tgingold@free.fr>2019-07-14 06:10:00 +0200
commitfb1c1e0018af55dd59abd52a4b43781ad6747c62 (patch)
tree5aa5a12d9ed8f33b385193674f61436266154c4c /src/vhdl/vhdl-nodes_walk.adb
parent657f8e0d2b78a53d660ff144153f79083a3ec91d (diff)
downloadghdl-fb1c1e0018af55dd59abd52a4b43781ad6747c62.tar.gz
ghdl-fb1c1e0018af55dd59abd52a4b43781ad6747c62.tar.bz2
ghdl-fb1c1e0018af55dd59abd52a4b43781ad6747c62.zip
vhdl: fixes in find_top_entity (handle for-generate, remove early return)
Diffstat (limited to 'src/vhdl/vhdl-nodes_walk.adb')
-rw-r--r--src/vhdl/vhdl-nodes_walk.adb13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/vhdl/vhdl-nodes_walk.adb b/src/vhdl/vhdl-nodes_walk.adb
index 1f33ee23f..e9ae956a7 100644
--- a/src/vhdl/vhdl-nodes_walk.adb
+++ b/src/vhdl/vhdl-nodes_walk.adb
@@ -158,7 +158,10 @@ package body Vhdl.Nodes_Walk is
case Iir_Kinds_Concurrent_Statement (Get_Kind (El)) is
when Iir_Kinds_Simple_Concurrent_Statement
| Iir_Kind_Component_Instantiation_Statement =>
- return Cb.all (El);
+ Status := Cb.all (El);
+ if Status /= Walk_Continue then
+ return Status;
+ end if;
when Iir_Kind_Block_Statement =>
Status := Cb.all (El);
if Status /= Walk_Continue then
@@ -166,6 +169,14 @@ package body Vhdl.Nodes_Walk is
end if;
return Walk_Concurrent_Statements_Chain
(Get_Concurrent_Statement_Chain (El), Cb);
+ when Iir_Kind_For_Generate_Statement =>
+ Status := Cb.all (El);
+ if Status /= Walk_Continue then
+ return Status;
+ end if;
+ return Walk_Concurrent_Statements_Chain
+ (Get_Concurrent_Statement_Chain
+ (Get_Generate_Statement_Body (El)), Cb);
when others =>
Error_Kind ("walk_concurrent_statements_chain", El);
end case;