aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/sem_inst.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2018-09-20 06:38:53 +0200
committerTristan Gingold <tgingold@free.fr>2018-09-20 06:38:53 +0200
commit0594a0c145e8c23500be3be298f70d6059cdb0d6 (patch)
tree823b398b0195455aef20fce0f3b520cc7ef9a27c /src/vhdl/sem_inst.adb
parent1f4e4525f08588cab5e1ecc6357dfe2ebc333ae2 (diff)
downloadghdl-0594a0c145e8c23500be3be298f70d6059cdb0d6.tar.gz
ghdl-0594a0c145e8c23500be3be298f70d6059cdb0d6.tar.bz2
ghdl-0594a0c145e8c23500be3be298f70d6059cdb0d6.zip
Add Maybe_Ref_Chain (WIP).
Diffstat (limited to 'src/vhdl/sem_inst.adb')
-rw-r--r--src/vhdl/sem_inst.adb14
1 files changed, 14 insertions, 0 deletions
diff --git a/src/vhdl/sem_inst.adb b/src/vhdl/sem_inst.adb
index 029ec235d..e22f8e1d4 100644
--- a/src/vhdl/sem_inst.adb
+++ b/src/vhdl/sem_inst.adb
@@ -275,6 +275,12 @@ package body Sem_Inst is
end if;
when Attr_Chain =>
R := Instantiate_Iir_Chain (S);
+ when Attr_Maybe_Ref_Chain =>
+ if Get_Is_Ref (N) then
+ R := Instantiate_Iir (S, True);
+ else
+ R := Instantiate_Iir_Chain (S);
+ end if;
when Attr_Chain_Next =>
R := Null_Iir;
when Attr_Of_Ref | Attr_Of_Maybe_Ref =>
@@ -733,6 +739,10 @@ package body Sem_Inst is
end if;
when Attr_Chain =>
Set_Instance_On_Chain (S, S_Inst);
+ when Attr_Maybe_Ref_Chain =>
+ if not Get_Is_Ref (N) then
+ Set_Instance_On_Chain (S, S_Inst);
+ end if;
when Attr_Chain_Next =>
null;
when Attr_Of_Ref | Attr_Of_Maybe_Ref =>
@@ -1120,6 +1130,10 @@ package body Sem_Inst is
end if;
when Attr_Chain =>
Substitute_On_Chain (S, E, Rep);
+ when Attr_Maybe_Ref_Chain =>
+ if not Get_Is_Ref (N) then
+ Substitute_On_Chain (S, E, Rep);
+ end if;
when Attr_Chain_Next =>
null;
when Attr_Of_Ref | Attr_Of_Maybe_Ref =>