diff options
author | Tristan Gingold | 2015-01-12 19:03:12 +0100 |
---|---|---|
committer | Tristan Gingold | 2015-01-12 19:03:12 +0100 |
commit | f6227b6be67383fd0e6d8fd6c273509515ac3bc0 (patch) | |
tree | b0365ad6cd2d961d46df6749c88208be79011083 /src | |
parent | 9e5342c2299a14c39d04974d6a7a098fd01173fe (diff) | |
download | ghdl-f6227b6be67383fd0e6d8fd6c273509515ac3bc0.tar.gz ghdl-f6227b6be67383fd0e6d8fd6c273509515ac3bc0.tar.bz2 ghdl-f6227b6be67383fd0e6d8fd6c273509515ac3bc0.zip |
sem: fix Can_Collapse_Signals regression.
Diffstat (limited to 'src')
-rw-r--r-- | src/grt/grt-signals.adb | 1 | ||||
-rw-r--r-- | src/grt/grt-signals.ads | 4 | ||||
-rw-r--r-- | src/grt/grt-types.ads | 4 | ||||
-rw-r--r-- | src/vhdl/sem.adb | 6 |
4 files changed, 10 insertions, 5 deletions
diff --git a/src/grt/grt-signals.adb b/src/grt/grt-signals.adb index 1a4454a..226e7f8 100644 --- a/src/grt/grt-signals.adb +++ b/src/grt/grt-signals.adb @@ -2620,6 +2620,7 @@ package body Grt.Signals is (Resolv.Resolv_Proc = To_Resolver_Acc (Ieee_Std_Logic_1164_Resolved_Resolv_Ptr)) and then Sig.S.Nbr_Drivers + Sig.Nbr_Ports <= 1 + and then Sig.Sig_Kind = Kind_Signal_No then -- Optimization: remove resolver if there is at most one -- source. diff --git a/src/grt/grt-signals.ads b/src/grt/grt-signals.ads index 0b69e60..8461e5e 100644 --- a/src/grt/grt-signals.ads +++ b/src/grt/grt-signals.ads @@ -33,6 +33,10 @@ pragma Elaborate_All (Grt.Table); package Grt.Signals is pragma Suppress (All_Checks); + -- Kind of a signal. + type Kind_Signal_Type is + (Kind_Signal_No, Kind_Signal_Register, Kind_Signal_Bus); + -- Kind of transaction. type Transaction_Kind is ( diff --git a/src/grt/grt-types.ads b/src/grt/grt-types.ads index fed8225..c0b3c3b 100644 --- a/src/grt/grt-types.ads +++ b/src/grt/grt-types.ads @@ -301,10 +301,6 @@ package Grt.Types is subtype Mode_Signal_Forward is Mode_Signal_Type range Mode_Stable .. Mode_Delayed; - -- Kind of a signal. - type Kind_Signal_Type is - (Kind_Signal_No, Kind_Signal_Register, Kind_Signal_Bus); - -- Note: we could use system.storage_elements, but unfortunatly, -- this doesn't work with pragma no_run_time (gnat 3.15p). type Integer_Address is mod Memory_Size; diff --git a/src/vhdl/sem.adb b/src/vhdl/sem.adb index 28cef78..1380568 100644 --- a/src/vhdl/sem.adb +++ b/src/vhdl/sem.adb @@ -337,7 +337,11 @@ package body Sem is -- If the formal can have sources and is guarded, but the actual is -- not guarded (or has not the same kind of guard), signals cannot -- be collapsed. - if Get_Signal_Kind (Formal_Base) /= Get_Signal_Kind (Actual_Base) then + if (Get_Guarded_Signal_Flag (Formal_Base) + /= Get_Guarded_Signal_Flag (Actual_Base)) + or else (Get_Signal_Kind (Formal_Base) + /= Get_Signal_Kind (Actual_Base)) + then return False; end if; |