diff options
author | Tristan Gingold <tgingold@free.fr> | 2018-09-20 06:38:53 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2018-09-20 06:38:53 +0200 |
commit | 0594a0c145e8c23500be3be298f70d6059cdb0d6 (patch) | |
tree | 823b398b0195455aef20fce0f3b520cc7ef9a27c /src/vhdl/sem_inst.adb | |
parent | 1f4e4525f08588cab5e1ecc6357dfe2ebc333ae2 (diff) | |
download | ghdl-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.adb | 14 |
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 => |