aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/configuration.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdl/configuration.adb')
-rw-r--r--src/vhdl/configuration.adb11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/vhdl/configuration.adb b/src/vhdl/configuration.adb
index e4b862f3b..8c442dd76 100644
--- a/src/vhdl/configuration.adb
+++ b/src/vhdl/configuration.adb
@@ -52,9 +52,14 @@ package body Configuration is
-- If already in the table, then nothing to do.
if Get_Configuration_Mark_Flag (Unit) then
- if not Get_Configuration_Done_Flag (Unit) then
- raise Internal_Error;
- end if;
+ -- There might be some direct recursions:
+ -- * the default configuration might be implicitly referenced by
+ -- a direct entity instantiation
+ -- * a configuration may be referenced by itself for a recursive
+ -- instantiation
+ pragma Assert (Get_Configuration_Done_Flag (Unit)
+ or else (Get_Kind (Get_Library_Unit (Unit))
+ = Iir_Kind_Configuration_Declaration));
return;
end if;
Set_Configuration_Mark_Flag (Unit, True);