aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/translate/trans-chap9.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2016-11-04 08:05:19 +0100
committerTristan Gingold <tgingold@free.fr>2016-11-05 06:38:19 +0100
commitb106247a9843880bcfa3611444e20696f0fb35ae (patch)
tree614fb373a86c6ff16a7239478bb2b5780b6901d9 /src/vhdl/translate/trans-chap9.adb
parent4c7c53b2fb53cd6ff03776b4ce47f6e9f30fd52f (diff)
downloadghdl-b106247a9843880bcfa3611444e20696f0fb35ae.tar.gz
ghdl-b106247a9843880bcfa3611444e20696f0fb35ae.tar.bz2
ghdl-b106247a9843880bcfa3611444e20696f0fb35ae.zip
ownership: check tree after sem and canon.
Diffstat (limited to 'src/vhdl/translate/trans-chap9.adb')
-rw-r--r--src/vhdl/translate/trans-chap9.adb18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/vhdl/translate/trans-chap9.adb b/src/vhdl/translate/trans-chap9.adb
index 5f4ef84bf..90995f21b 100644
--- a/src/vhdl/translate/trans-chap9.adb
+++ b/src/vhdl/translate/trans-chap9.adb
@@ -1172,13 +1172,17 @@ package body Trans.Chap9 is
Destroy_Types_In_Chain (Get_Iir (N, F));
when Attr_Chain_Next =>
null;
- when Attr_Of_Ref =>
+ when Attr_Of_Ref | Attr_Of_Maybe_Ref =>
raise Internal_Error;
end case;
when Type_Iir_List =>
case Get_Field_Attribute (F) is
when Attr_None =>
Destroy_Types_In_List (Get_Iir_List (N, F));
+ when Attr_Of_Maybe_Ref =>
+ if not Get_Is_Ref (N) then
+ Destroy_Types_In_List (Get_Iir_List (N, F));
+ end if;
when Attr_Ref
| Attr_Of_Ref =>
null;
@@ -1549,9 +1553,15 @@ package body Trans.Chap9 is
when Iir_Kind_Entity_Aspect_Entity =>
Entity := Get_Entity (Aspect);
Arch := Get_Architecture (Aspect);
- if Flags.Flag_Elaborate and then Arch = Null_Iir then
- -- This is valid only during elaboration.
- Arch := Libraries.Get_Latest_Architecture (Entity);
+ if Arch = Null_Iir then
+ if Flags.Flag_Elaborate then
+ -- This is valid only during elaboration.
+ Arch := Libraries.Get_Latest_Architecture (Entity);
+ end if;
+ else
+ if Is_Valid (Get_Named_Entity (Arch)) then
+ Arch := Get_Named_Entity (Arch);
+ end if;
end if;
Config := Null_Iir;
when Iir_Kind_Entity_Aspect_Configuration =>