diff options
author | Tristan Gingold <tgingold@free.fr> | 2022-06-07 04:03:56 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2022-06-07 04:03:56 +0200 |
commit | 177546b2cbb41f4a835025631187fb4dcf0c896e (patch) | |
tree | 39c937f65d5156c4d9ee7ba542a4ba108548f81c /src | |
parent | 65544a635f3588dfdeed8d0ffc4a7ea4d65511cd (diff) | |
download | ghdl-177546b2cbb41f4a835025631187fb4dcf0c896e.tar.gz ghdl-177546b2cbb41f4a835025631187fb4dcf0c896e.tar.bz2 ghdl-177546b2cbb41f4a835025631187fb4dcf0c896e.zip |
errorout: add nowrite warning. Fix #2081
During synthesis, emit a specific warning if a net is not assigned
Diffstat (limited to 'src')
-rw-r--r-- | src/errorout.ads | 5 | ||||
-rw-r--r-- | src/synth/synth-errors.adb | 6 | ||||
-rw-r--r-- | src/synth/synth-errors.ads | 3 | ||||
-rw-r--r-- | src/synth/synth-vhdl_decls.adb | 8 | ||||
-rw-r--r-- | src/synth/synth-vhdl_environment.adb | 2 |
5 files changed, 16 insertions, 8 deletions
diff --git a/src/errorout.ads b/src/errorout.ads index 8cda8e69d..16515d8af 100644 --- a/src/errorout.ads +++ b/src/errorout.ads @@ -106,6 +106,10 @@ package Errorout is -- FIXME: currently only subprograms are handled. Warnid_Unused, + -- A variable or signal is never written. + -- (only for synthesis) + Warnid_Nowrite, + -- Others choice is not needed, all values are already covered. Warnid_Others, @@ -320,6 +324,7 @@ private | Warnid_Runtime_Error | Warnid_Pure | Warnid_Specs | Warnid_Hide | Warnid_Pragma | Warnid_Analyze_Assert | Warnid_Attribute | Warnid_Deprecated_Option | Warnid_Unexpected_Option + | Warnid_Nowrite | Warnid_No_Wait | Warnid_Useless | Msgid_Warning => (Enabled => True, Error => False), Warnid_Delta_Cycle | Warnid_Body | Warnid_Static | Warnid_Nested_Comment diff --git a/src/synth/synth-errors.adb b/src/synth/synth-errors.adb index e8d693d0b..a0b672770 100644 --- a/src/synth/synth-errors.adb +++ b/src/synth/synth-errors.adb @@ -33,12 +33,12 @@ package body Synth.Errors is +Loc, Msg, Args); end Error_Msg_Synth; - procedure Warning_Msg_Synth (Loc : Location_Type; + procedure Warning_Msg_Synth (Warnid : Msgid_Warnings; + Loc : Location_Type; Msg : String; Arg1 : Earg_Type) is begin - Report_Msg (Msgid_Warning, Errorout.Elaboration, - +Loc, Msg, (1 => Arg1)); + Report_Msg (Warnid, Errorout.Elaboration, +Loc, Msg, (1 => Arg1)); end Warning_Msg_Synth; procedure Warning_Msg_Synth (Loc : Location_Type; diff --git a/src/synth/synth-errors.ads b/src/synth/synth-errors.ads index 800f3232e..448ab6be1 100644 --- a/src/synth/synth-errors.ads +++ b/src/synth/synth-errors.ads @@ -26,7 +26,8 @@ package Synth.Errors is procedure Error_Msg_Synth (Loc : Location_Type; Msg : String; Args : Earg_Arr := No_Eargs); - procedure Warning_Msg_Synth (Loc : Location_Type; + procedure Warning_Msg_Synth (Warnid : Msgid_Warnings; + Loc : Location_Type; Msg : String; Arg1 : Earg_Type); procedure Warning_Msg_Synth (Loc : Location_Type; diff --git a/src/synth/synth-vhdl_decls.adb b/src/synth/synth-vhdl_decls.adb index 96339dfcd..b6b00270e 100644 --- a/src/synth/synth-vhdl_decls.adb +++ b/src/synth/synth-vhdl_decls.adb @@ -18,6 +18,7 @@ with Types; use Types; with Std_Names; +with Errorout; use Errorout; with Netlists.Builders; use Netlists.Builders; with Netlists.Folds; use Netlists.Folds; @@ -697,10 +698,11 @@ package body Synth.Vhdl_Decls is -- TODO: maybe simply remove it. if Def_Val = No_Net then Warning_Msg_Synth - (+Decl, "%n is never assigned and has no default value", - (1 => +Decl)); + (Warnid_Nowrite, +Decl, + "%n is never assigned and has no default value", +Decl); else - Warning_Msg_Synth (+Decl, "%n is never assigned", (1 => +Decl)); + Warning_Msg_Synth + (Warnid_Nowrite, +Decl, "%n is never assigned", +Decl); end if; end if; if Def_Val = No_Net then diff --git a/src/synth/synth-vhdl_environment.adb b/src/synth/synth-vhdl_environment.adb index e86cd7a7c..7e726993c 100644 --- a/src/synth/synth-vhdl_environment.adb +++ b/src/synth/synth-vhdl_environment.adb @@ -50,7 +50,7 @@ package body Synth.Vhdl_Environment is begin if Last_Off < First_Off then Warning_Msg_Synth - (+Decl.Obj, "no assignment for %n", +Decl.Obj); + (Warnid_Nowrite, +Decl.Obj, "no assignment for %n", +Decl.Obj); elsif Last_Off = First_Off then Warning_Msg_Synth (+Decl.Obj, "no assignment for offset %v of %n", (1 => +First_Off, 2 => +Decl.Obj)); |