Add command line control over anachronism warnings.
This commit is contained in:
parent
69c10c4722
commit
fb3969b5b8
|
|
@ -92,6 +92,9 @@ extern bool warn_inf_loop;
|
||||||
extern bool warn_sens_entire_vec;
|
extern bool warn_sens_entire_vec;
|
||||||
extern bool warn_sens_entire_arr;
|
extern bool warn_sens_entire_arr;
|
||||||
|
|
||||||
|
/* Warn about level-appropriate anochronisms. */
|
||||||
|
extern bool warn_anachronisms;
|
||||||
|
|
||||||
/* This is true if verbose output is requested. */
|
/* This is true if verbose output is requested. */
|
||||||
extern bool verbose_flag;
|
extern bool verbose_flag;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -136,7 +136,7 @@ int gen_std_include = 1;
|
||||||
of the include list. */
|
of the include list. */
|
||||||
int gen_relative_include = 0;
|
int gen_relative_include = 0;
|
||||||
|
|
||||||
char warning_flags[16] = "";
|
char warning_flags[16] = "n";
|
||||||
|
|
||||||
unsigned integer_width = 32;
|
unsigned integer_width = 32;
|
||||||
|
|
||||||
|
|
@ -491,11 +491,15 @@ static int t_compile()
|
||||||
static void process_warning_switch(const char*name)
|
static void process_warning_switch(const char*name)
|
||||||
{
|
{
|
||||||
if (strcmp(name,"all") == 0) {
|
if (strcmp(name,"all") == 0) {
|
||||||
|
process_warning_switch("anachronisms");
|
||||||
process_warning_switch("implicit");
|
process_warning_switch("implicit");
|
||||||
process_warning_switch("portbind");
|
process_warning_switch("portbind");
|
||||||
process_warning_switch("select-range");
|
process_warning_switch("select-range");
|
||||||
process_warning_switch("timescale");
|
process_warning_switch("timescale");
|
||||||
process_warning_switch("sensitivity-entire-array");
|
process_warning_switch("sensitivity-entire-array");
|
||||||
|
} else if (strcmp(name,"anachronisms") == 0) {
|
||||||
|
if (! strchr(warning_flags, 'n'))
|
||||||
|
strcat(warning_flags, "n");
|
||||||
} else if (strcmp(name,"implicit") == 0) {
|
} else if (strcmp(name,"implicit") == 0) {
|
||||||
if (! strchr(warning_flags, 'i'))
|
if (! strchr(warning_flags, 'i'))
|
||||||
strcat(warning_flags, "i");
|
strcat(warning_flags, "i");
|
||||||
|
|
@ -519,6 +523,12 @@ static void process_warning_switch(const char*name)
|
||||||
} else if (strcmp(name,"sensitivity-entire-array") == 0) {
|
} else if (strcmp(name,"sensitivity-entire-array") == 0) {
|
||||||
if (! strchr(warning_flags, 'a'))
|
if (! strchr(warning_flags, 'a'))
|
||||||
strcat(warning_flags, "a");
|
strcat(warning_flags, "a");
|
||||||
|
} else if (strcmp(name,"no-anachronisms") == 0) {
|
||||||
|
char*cp = strchr(warning_flags, 'n');
|
||||||
|
if (cp) while (*cp) {
|
||||||
|
cp[0] = cp[1];
|
||||||
|
cp += 1;
|
||||||
|
}
|
||||||
} else if (strcmp(name,"no-implicit") == 0) {
|
} else if (strcmp(name,"no-implicit") == 0) {
|
||||||
char*cp = strchr(warning_flags, 'i');
|
char*cp = strchr(warning_flags, 'i');
|
||||||
if (cp) while (*cp) {
|
if (cp) while (*cp) {
|
||||||
|
|
|
||||||
4
main.cc
4
main.cc
|
|
@ -158,6 +158,7 @@ bool warn_inf_loop = false;
|
||||||
bool warn_ob_select = false;
|
bool warn_ob_select = false;
|
||||||
bool warn_sens_entire_vec = false;
|
bool warn_sens_entire_vec = false;
|
||||||
bool warn_sens_entire_arr = false;
|
bool warn_sens_entire_arr = false;
|
||||||
|
bool warn_anachronisms = false;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Debug message class flags.
|
* Debug message class flags.
|
||||||
|
|
@ -667,6 +668,9 @@ static void read_iconfig_file(const char*ipath)
|
||||||
case 'a':
|
case 'a':
|
||||||
warn_sens_entire_arr = true;
|
warn_sens_entire_arr = true;
|
||||||
break;
|
break;
|
||||||
|
case 'n':
|
||||||
|
warn_anachronisms = true;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
4
parse.y
4
parse.y
|
|
@ -4272,7 +4272,7 @@ module_item
|
||||||
/* Handle some anachronistic syntax cases. */
|
/* Handle some anachronistic syntax cases. */
|
||||||
| K_generate K_begin module_item_list_opt K_end K_endgenerate
|
| K_generate K_begin module_item_list_opt K_end K_endgenerate
|
||||||
{ /* Detect and warn about anachronistic begin/end use */
|
{ /* Detect and warn about anachronistic begin/end use */
|
||||||
if (generation_flag > GN_VER2001) {
|
if (generation_flag > GN_VER2001 && warn_anachronisms) {
|
||||||
warn_count += 1;
|
warn_count += 1;
|
||||||
cerr << @2 << ": warning: Anachronistic use of begin/end to surround generate schemes." << endl;
|
cerr << @2 << ": warning: Anachronistic use of begin/end to surround generate schemes." << endl;
|
||||||
}
|
}
|
||||||
|
|
@ -4281,7 +4281,7 @@ module_item
|
||||||
pform_start_generate_nblock(@2, $4);
|
pform_start_generate_nblock(@2, $4);
|
||||||
} module_item_list_opt K_end K_endgenerate
|
} module_item_list_opt K_end K_endgenerate
|
||||||
{ /* Detect and warn about anachronistic named begin/end use */
|
{ /* Detect and warn about anachronistic named begin/end use */
|
||||||
if (generation_flag > GN_VER2001) {
|
if (generation_flag > GN_VER2001 && warn_anachronisms) {
|
||||||
warn_count += 1;
|
warn_count += 1;
|
||||||
cerr << @2 << ": warning: Anachronistic use of named begin/end to surround generate schemes." << endl;
|
cerr << @2 << ": warning: Anachronistic use of named begin/end to surround generate schemes." << endl;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ iwidth:32
|
||||||
sys_func:vpi/system.sft
|
sys_func:vpi/system.sft
|
||||||
sys_func:vpi/v2005_math.sft
|
sys_func:vpi/v2005_math.sft
|
||||||
sys_func:vpi/va_math.sft
|
sys_func:vpi/va_math.sft
|
||||||
warnings:implicit
|
warnings:ailnpstv
|
||||||
debug:eval_tree
|
debug:eval_tree
|
||||||
debug:elaborate
|
debug:elaborate
|
||||||
debug:elab_pexpr
|
debug:elab_pexpr
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,6 @@
|
||||||
#
|
#
|
||||||
# NOTE: DO NOT INSTALL THIS FILE.
|
# NOTE: DO NOT INSTALL THIS FILE.
|
||||||
|
|
||||||
./ivl -v -Ctgt-stub/stub.conf -C./scripts/devel-stub.conf -Pa.pf -Na.net -fDLL=tgt-stub/stub.tgt foo.vl
|
./ivl -v -Ctgt-stub/stub.conf -C./scripts/devel-stub.conf -Pa.pf -Na.net -fDLL=tgt-stub/stub.tgt foo.vl |& tee foo.log
|
||||||
|
|
||||||
echo "*** ivl command completed, rc=$?"
|
echo "*** ivl command completed, rc=$?"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue