diff options
| author | Tristan Gingold <tgingold@free.fr> | 2022-09-11 08:00:53 +0200 | 
|---|---|---|
| committer | Tristan Gingold <tgingold@free.fr> | 2022-09-11 08:00:53 +0200 | 
| commit | c9eff2be46ac18d13ad003fd6724937b5691cff3 (patch) | |
| tree | 263a4236745915acca1f1c72d28237086d4052e0 /src | |
| parent | ff1ef30e8d370f89294e2d6e82fb1a15cdcd519c (diff) | |
| download | ghdl-c9eff2be46ac18d13ad003fd6724937b5691cff3.tar.gz ghdl-c9eff2be46ac18d13ad003fd6724937b5691cff3.tar.bz2 ghdl-c9eff2be46ac18d13ad003fd6724937b5691cff3.zip | |
simul: optimize resolution call only for std_logic
Diffstat (limited to 'src')
| -rw-r--r-- | src/simul/simul-vhdl_simul.adb | 16 | 
1 files changed, 11 insertions, 5 deletions
| diff --git a/src/simul/simul-vhdl_simul.adb b/src/simul/simul-vhdl_simul.adb index 5d86ee4a2..ed029cdf5 100644 --- a/src/simul/simul-vhdl_simul.adb +++ b/src/simul/simul-vhdl_simul.adb @@ -2056,19 +2056,25 @@ package body Simul.Vhdl_Simul is                                 Already_Resolved : Boolean)        is           Sub_Resolved : Boolean := Already_Resolved; -         Resolv_Func : Iir; +         Resolv_Func : Node;           Resolv_Instance : Resolv_Instance_Acc;           S : Ghdl_Signal_Ptr; -         Arr_Type : Iir; -         Idx_Type : Iir; +         Arr_Type : Node; +         Idx_Type : Node;        begin           if not Already_Resolved             and then Get_Kind (Sig_Type) in Iir_Kinds_Subtype_Definition           then              Resolv_Func := Get_Resolution_Indication (Sig_Type); -            if Resolv_Func /= Null_Iir and then Vec (Sig_Off).Total > 1 then -               Sub_Resolved := True; +            if Resolv_Func /= Null_Node then                 Resolv_Func := Get_Named_Entity (Resolv_Func); +            end if; +            if Resolv_Func /= Null_Node +              and then +              (Vec (Sig_Off).Total > 1 +                 or else Resolv_Func /= Vhdl.Ieee.Std_Logic_1164.Resolved) +            then +               Sub_Resolved := True;                 Arr_Type :=                   Get_Type (Get_Interface_Declaration_Chain (Resolv_Func));                 Idx_Type := Vhdl.Utils.Get_Index_Type (Arr_Type, 0); | 
