aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-sem.adb
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-06-05 20:32:28 +0200
committerTristan Gingold <tgingold@free.fr>2019-06-05 20:32:28 +0200
commit7da8782857a299f95e2cf1c348cd7f67f62cd2eb (patch)
treeb666756ee95827dbad13b4ed59c4986d1c833bf8 /src/vhdl/vhdl-sem.adb
parent7788d84b06b72c874043541011840f95472ce6e9 (diff)
downloadghdl-7da8782857a299f95e2cf1c348cd7f67f62cd2eb.tar.gz
ghdl-7da8782857a299f95e2cf1c348cd7f67f62cd2eb.tar.bz2
ghdl-7da8782857a299f95e2cf1c348cd7f67f62cd2eb.zip
vhdl: detect unused signals and variables.
Diffstat (limited to 'src/vhdl/vhdl-sem.adb')
-rw-r--r--src/vhdl/vhdl-sem.adb29
1 files changed, 19 insertions, 10 deletions
diff --git a/src/vhdl/vhdl-sem.adb b/src/vhdl/vhdl-sem.adb
index 53a61ca3b..503d43293 100644
--- a/src/vhdl/vhdl-sem.adb
+++ b/src/vhdl/vhdl-sem.adb
@@ -545,16 +545,21 @@ package body Vhdl.Sem is
Check_Port_Association_Bounds_Restrictions
(Formal, Actual, Assoc);
Prefix := Get_Object_Prefix (Object);
- if Get_Kind (Prefix) = Iir_Kind_Interface_Signal_Declaration
- then
- declare
- P : Boolean;
- pragma Unreferenced (P);
- begin
- P := Check_Port_Association_Mode_Restrictions
- (Formal_Base, Prefix, Assoc);
- end;
- end if;
+ case Get_Kind (Prefix) is
+ when Iir_Kind_Interface_Signal_Declaration =>
+ declare
+ P : Boolean;
+ pragma Unreferenced (P);
+ begin
+ P := Check_Port_Association_Mode_Restrictions
+ (Formal_Base, Prefix, Assoc);
+ end;
+ when Iir_Kind_Signal_Declaration =>
+ Set_Use_Flag (Prefix, True);
+ when others =>
+ -- FIXME: attributes ?
+ null;
+ end case;
else
-- Expression.
Set_Collapse_Signal_Flag (Assoc, False);
@@ -580,6 +585,10 @@ package body Vhdl.Sem is
(+Actual,
"actual expression must be globally static");
end if;
+
+ -- Is it possible to have a globally static name that is
+ -- not readable ?
+ Check_Read (Actual);
else
Error_Msg_Sem
(+Assoc,