aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2021-10-18 19:47:25 +0200
committerTristan Gingold <tgingold@free.fr>2021-10-18 19:47:25 +0200
commit8177c4596d0d14ec8634a90a13ab83a3032b23e5 (patch)
treea28dad73857f6c8c87d56078c14e957f68e3a035
parent260be4a7519dd69c508dd1d013f07269921dad7f (diff)
downloadghdl-8177c4596d0d14ec8634a90a13ab83a3032b23e5.tar.gz
ghdl-8177c4596d0d14ec8634a90a13ab83a3032b23e5.tar.bz2
ghdl-8177c4596d0d14ec8634a90a13ab83a3032b23e5.zip
vhdl-configuration.adb: avoid a crash in case of error. Fix #1897
-rw-r--r--src/vhdl/vhdl-configuration.adb13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/vhdl/vhdl-configuration.adb b/src/vhdl/vhdl-configuration.adb
index d45cfc1b2..6eb427af9 100644
--- a/src/vhdl/vhdl-configuration.adb
+++ b/src/vhdl/vhdl-configuration.adb
@@ -102,7 +102,9 @@ package body Vhdl.Configuration is
end if;
if Flag_Load_All_Design_Units then
+ -- Load and analyze UNIT.
Load_Design_Unit (Unit, From);
+ -- TODO: exit now in case of error ?
end if;
-- Add packages from depend list.
@@ -170,8 +172,15 @@ package body Vhdl.Configuration is
when Iir_Kind_Architecture_Body =>
-- Add entity
-- find all entity/architecture/configuration instantiation
- Add_Design_Unit (Get_Design_Unit (Get_Entity (Lib_Unit)), Loc);
- Add_Design_Concurrent_Stmts (Lib_Unit);
+ declare
+ Ent : constant Iir := Get_Entity (Lib_Unit);
+ begin
+ if Ent /= Null_Iir then
+ -- In case of errors.
+ Add_Design_Unit (Get_Design_Unit (Ent), Loc);
+ end if;
+ Add_Design_Concurrent_Stmts (Lib_Unit);
+ end;
when Iir_Kinds_Verification_Unit =>
Add_Verification_Unit_Items (Lib_Unit);
when Iir_Kind_Entity_Declaration