From 399384d81b6a170fe732fd59e9f026a1347f2b39 Mon Sep 17 00:00:00 2001 From: Cary R Date: Sat, 19 Dec 2015 17:18:15 -0800 Subject: [PATCH 1/4] Fix some cppcheck warnings and bugs --- Module.cc | 3 ++- cppcheck.sup | 4 ++-- elab_expr.cc | 28 ++++++++++++---------------- expr_synth.cc | 10 ++++++++-- link_const.cc | 8 ++++---- net_design.cc | 4 ++-- symbol_search.cc | 5 +++-- version.c | 6 +++--- 8 files changed, 36 insertions(+), 32 deletions(-) diff --git a/Module.cc b/Module.cc index b69a3a950..b57741041 100644 --- a/Module.cc +++ b/Module.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998-2010 Stephen Williams (steve@icarus.com) + * Copyright (c) 1998-2015 Stephen Williams (steve@icarus.com) * * This source code is free software; you can redistribute it * and/or modify it in source code form under the terms of the GNU @@ -32,6 +32,7 @@ Module::Module(LexicalScope*parent, perm_string n) { library_flag = false; is_cell = false; + is_interface = false; program_block = false; uc_drive = UCD_NONE; timescale_warn_done = false; diff --git a/cppcheck.sup b/cppcheck.sup index a149fad77..b214573da 100644 --- a/cppcheck.sup +++ b/cppcheck.sup @@ -1,3 +1,3 @@ // These are correct and are used to find the base (zero) pin. -thisSubtraction:netlist.h:4976 -thisSubtraction:netlist.h:4985 +thisSubtraction:netlist.h:4991 +thisSubtraction:netlist.h:5000 diff --git a/elab_expr.cc b/elab_expr.cc index 53576fa41..cb0be36ca 100644 --- a/elab_expr.cc +++ b/elab_expr.cc @@ -1277,7 +1277,6 @@ unsigned PECallFunction::test_width_method_(Design*des, NetScope*scope, return 0; perm_string member_name; - ivl_type_t member_type = 0; pform_name_t use_path = path_; perm_string method_name = peek_tail_name(use_path); use_path.pop_back(); @@ -1317,11 +1316,8 @@ unsigned PECallFunction::test_width_method_(Design*des, NetScope*scope, const netclass_t* class_type = net->class_type(); int midx = class_type->property_idx_from_name(member_name); - if (midx >= 0) - member_type = class_type->get_prop_type(midx); - else - member_type = 0; - use_path = tmp_path; + ivl_type_t member_type = 0; + if (midx >= 0) member_type = class_type->get_prop_type(midx); use_darray = dynamic_cast (member_type); @@ -1410,7 +1406,7 @@ NetExpr*PECallFunction::cast_to_width_(NetExpr*expr, unsigned wid) const if (debug_elaborate) { cerr << get_fileline() << ": PECallFunction::cast_to_width_: " << "cast to " << wid - << " bits " << (signed_flag_?"signed":"unsigned") + << " bits " << (signed_flag_ ? "signed" : "unsigned") << " from expr_width()=" << expr->expr_width() << endl; } @@ -1535,7 +1531,7 @@ NetExpr* PECallFunction::elaborate_sfunc_(Design*des, NetScope*scope, PExpr*expr = parms_[0]; - verinum val (expr->has_sign()? verinum::V1 : verinum::V0, 1); + verinum val (expr->has_sign() ? verinum::V1 : verinum::V0, 1); NetEConst*sub = new NetEConst(val); sub->set_line(*this); @@ -2017,7 +2013,7 @@ static NetExpr* check_for_struct_members(const LineInfo*li, } NetESignal*sig = new NetESignal(net); - NetExpr *base = packed_base? packed_base : make_const_val(off); + NetExpr *base = packed_base ? packed_base : make_const_val(off); if (debug_elaborate) { cerr << li->get_fileline() << ": debug: check_for_struct_members: " @@ -2681,7 +2677,7 @@ unsigned PEConcat::test_width(Design*des, NetScope*scope, width_mode_t&) expr_is_string = NO; } - expr_type_ = (expr_is_string==YES)? IVL_VT_STRING : IVL_VT_LOGIC; + expr_type_ = (expr_is_string==YES) ? IVL_VT_STRING : IVL_VT_LOGIC; signed_flag_ = false; // If there is a repeat expression, then evaluate the constant @@ -3035,7 +3031,7 @@ bool PEIdent::calculate_up_do_width_(Design*des, NetScope*scope, NetExpr*wid_ex = elab_and_eval(des, scope, index_tail.lsb, -1, true); NetEConst*wid_c = dynamic_cast(wid_ex); - wid = wid_c? wid_c->value().as_ulong() : 0; + wid = wid_c ? wid_c->value().as_ulong() : 0; if (wid == 0) { cerr << index_tail.lsb->get_fileline() << ": error: " "Indexed part widths must be constant and greater than zero." @@ -3184,7 +3180,7 @@ unsigned PEIdent::test_width(Design*des, NetScope*scope, width_mode_t&mode) bool parts_defined; calculate_parts_(des, scope, msb, lsb, parts_defined); if (parts_defined) - use_width = 1 + ((msb>lsb)? (msb-lsb) : (lsb-msb)); + use_width = 1 + ((msb>lsb) ? (msb-lsb) : (lsb-msb)); else use_width = UINT_MAX; break; @@ -3218,7 +3214,7 @@ unsigned PEIdent::test_width(Design*des, NetScope*scope, width_mode_t&mode) ivl_assert(*this, 0); } - if (const netdarray_t*darray = net? net->darray_type() : 0) { + if (const netdarray_t*darray = net ? net->darray_type() : 0) { switch (use_sel) { case index_component_t::SEL_BIT: case index_component_t::SEL_BIT_LAST: @@ -3272,7 +3268,7 @@ unsigned PEIdent::test_width(Design*des, NetScope*scope, width_mode_t&mode) << net->name() << " is a net, " << "type=" << expr_type_ << ", width=" << expr_width_ - << ", signed_=" << (signed_flag_?"true":"false") + << ", signed_=" << (signed_flag_ ? "true" : "false") << ", use_depth=" << use_depth << ", packed_dimensions=" << net->packed_dimensions() << ", unpacked_dimensions=" << net->unpacked_dimensions() @@ -3936,7 +3932,7 @@ NetExpr* PEIdent::elaborate_expr(Design*des, NetScope*scope, if ( !(SYS_TASK_ARG & flags) ) { // I cannot interpret this identifier. Error message. cerr << get_fileline() << ": error: Unable to bind " - << (NEED_CONST & flags ? "parameter" : "wire/reg/memory") + << ((NEED_CONST & flags) ? "parameter" : "wire/reg/memory") << " `" << path_ << "' in `" << scope_path(scope) << "'" << endl; if (scope->need_const_func()) { @@ -5626,7 +5622,7 @@ NetEConst* PENumber::elaborate_expr(Design*, NetScope*, unsigned PEString::test_width(Design*, NetScope*, width_mode_t&) { expr_type_ = IVL_VT_BOOL; - expr_width_ = text_? verinum(text_).len() : 0; + expr_width_ = text_ ? verinum(text_).len() : 0; min_width_ = expr_width_; signed_flag_ = false; diff --git a/expr_synth.cc b/expr_synth.cc index b1a2a8165..cb8ba87f0 100644 --- a/expr_synth.cc +++ b/expr_synth.cc @@ -733,12 +733,18 @@ NetNet* NetEConcat::synthesize(Design*des, NetScope*scope, NetExpr*root) } } - if (flag == false) return 0; + if (flag == false) { + delete[]tmp; + return 0; + } ivl_assert(*this, data_type != IVL_VT_NO_TYPE); /* If this is a replication of zero just return 0. */ - if (expr_width() == 0) return 0; + if (expr_width() == 0) { + delete[]tmp; + return 0; + } /* Make a NetNet object to carry the output vector. */ perm_string path = scope->local_symbol(); diff --git a/link_const.cc b/link_const.cc index e28388bbf..051718aaf 100644 --- a/link_const.cc +++ b/link_const.cc @@ -162,13 +162,13 @@ verinum::V Nexus::driven_value() const if ((sig->type() == NetNet::SUPPLY0) || (sig->type() == NetNet::TRI0)) { // Multiple drivers are not currently supported. - ivl_assert(*obj, val == verinum::Vz); + ivl_assert(*sig, val == verinum::Vz); val = verinum::V0; } if ((sig->type() == NetNet::SUPPLY1) || (sig->type() == NetNet::TRI1)) { // Multiple drivers are not currently supported. - ivl_assert(*obj, val == verinum::Vz); + ivl_assert(*sig, val == verinum::Vz); val = verinum::V1; } } @@ -222,13 +222,13 @@ verinum Nexus::driven_vector() const if ((sig->type() == NetNet::SUPPLY0) || (sig->type() == NetNet::TRI0)) { // Multiple drivers are not currently supported. - ivl_assert(*obj, val.len() == 0); + ivl_assert(*sig, val.len() == 0); val = verinum(verinum::V0, width); } if ((sig->type() == NetNet::SUPPLY1) || (sig->type() == NetNet::TRI1)) { // Multiple drivers are not currently supported. - ivl_assert(*obj, val.len() == 0); + ivl_assert(*sig, val.len() == 0); val = verinum(verinum::V1, width); } } diff --git a/net_design.cc b/net_design.cc index 2862815c6..c0d03cf9f 100644 --- a/net_design.cc +++ b/net_design.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2013 Stephen Williams (steve@icarus.com) + * Copyright (c) 2000-2015 Stephen Williams (steve@icarus.com) * * This source code is free software; you can redistribute it * and/or modify it in source code form under the terms of the GNU @@ -890,8 +890,8 @@ void Design::add_node(NetNode*net) void Design::del_node(NetNode*net) { - assert(net->design_ == this); assert(net != 0); + assert(net->design_ == this); /* Interact with the Design::functor method by manipulating the cur and nxt pointers that it is using. */ diff --git a/symbol_search.cc b/symbol_search.cc index 951c6ad3f..fe24e33a0 100644 --- a/symbol_search.cc +++ b/symbol_search.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003-2012 Stephen Williams (steve@icarus.com) + * Copyright (c) 2003-2015 Stephen Williams (steve@icarus.com) * Copyright CERN 2012 / Stephen Williams (steve@icarus.com) * * This source code is free software; you can redistribute it @@ -66,6 +66,7 @@ static bool symbol_search(const LineInfo*li, Design*des, NetScope*scope, bool prefix_scope = false; bool recurse_flag = false; + assert(li); ivl_assert(*li, ! path.empty()); name_component_t path_tail = path.back(); path.pop_back(); @@ -94,7 +95,7 @@ static bool symbol_search(const LineInfo*li, Design*des, NetScope*scope, scope = recurse.scope; prefix_scope = true; - if (scope->is_auto() && li) { + if (scope->is_auto()) { cerr << li->get_fileline() << ": error: Hierarchical " "reference to automatically allocated item " "`" << path_tail.name << "' in path `" << path << "'" << endl; diff --git a/version.c b/version.c index e01bd89c7..64e4178c2 100644 --- a/version.c +++ b/version.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009 Stephen Williams (steve@icarus.com) + * Copyright (c) 2009-2015 Stephen Williams (steve@icarus.com) * * This source code is free software; you can redistribute it * and/or modify it in source code form under the terms of the GNU @@ -29,10 +29,10 @@ static void run_string(const char*txt) if (cp[0] == '%' && cp[1] != 0) { switch (cp[1]) { case 'M': - fprintf(stdout, "%u", VERSION_MAJOR); + fprintf(stdout, "%d", VERSION_MAJOR); break; case 'n': - fprintf(stdout, "%u", VERSION_MINOR); + fprintf(stdout, "%d", VERSION_MINOR); break; case 'E': fprintf(stdout, "%s", VERSION_EXTRA); From 1b8ed5f3ed1a25b772bf81245a66c817ed6d367d Mon Sep 17 00:00:00 2001 From: Cary R Date: Sat, 19 Dec 2015 18:49:55 -0800 Subject: [PATCH 2/4] Fix a few more cppcheck warnings and ignore the exported functions --- cppcheck.sup | 610 ++++++++++++++++++++++++++++++++++++++++++++++++++ net_assign.cc | 4 +- net_proc.cc | 3 +- 3 files changed, 615 insertions(+), 2 deletions(-) diff --git a/cppcheck.sup b/cppcheck.sup index b214573da..0c51fc608 100644 --- a/cppcheck.sup +++ b/cppcheck.sup @@ -1,3 +1,613 @@ // These are correct and are used to find the base (zero) pin. thisSubtraction:netlist.h:4991 thisSubtraction:netlist.h:5000 + +// These are the functions that the compiler exports to the targets. +//ivl_branch_island() +unusedFunction:t-dll-api.cc:38 +//ivl_branch_terminal() +unusedFunction:t-dll-api.cc:43 + +//ivl_const_bits() +unusedFunction:t-dll-api.cc:180 +//ivl_const_delay() +unusedFunction:t-dll-api.cc:198 +//ivl_const_file() +unusedFunction:t-dll-api.cc:204 +//ivl_const_lineno() +unusedFunction:t-dll-api.cc:210 +//ivl_const_nex() +unusedFunction:t-dll-api.cc:216 +//ivl_const_real() +unusedFunction:t-dll-api.cc:222 +//ivl_const_scope() +unusedFunction:t-dll-api.cc:229 +//ivl_const_signed() +unusedFunction:t-dll-api.cc:235 +//ivl_const_type() +unusedFunction:t-dll-api.cc:174 +//ivl_const_width() +unusedFunction:t-dll-api.cc:241 + +//ivl_design_const() +unusedFunction:t-dll-api.cc:116 +//ivl_design_consts() +unusedFunction:t-dll-api.cc:111 +//ivl_design_delay_sel() +unusedFunction:t-dll-api.cc:49 +//ivl_design_discipline() +unusedFunction:t-dll-api.cc:128 +//ivl_design_disciplines() +unusedFunction:t-dll-api.cc:122 +//ivl_design_flag() +unusedFunction:t-dll-api.cc:54 +//ivl_design_process() +unusedFunction:t-dll-api.cc:59 +//ivl_design_root() +unusedFunction:t-dll-api.cc:72 +//ivl_design_roots() +unusedFunction:t-dll-api.cc:81 +//ivl_design_time_precision() +unusedFunction:t-dll-api.cc:106 + +//ivl_discipline_domain() +unusedFunction:t-dll-api.cc:135 +//ivl_discipline_flow() +unusedFunction:t-dll-api.cc:140 +//ivl_discipline_name() +unusedFunction:t-dll-api.cc:145 +//ivl_discipline_potential() +unusedFunction:t-dll-api.cc:150 + +//ivl_enum_bits() +unusedFunction:t-dll-api.cc:260 +//ivl_enum_file() +unusedFunction:t-dll-api.cc:285 +//ivl_enum_lineno() +unusedFunction:t-dll-api.cc:291 +//ivl_enum_name() +unusedFunction:t-dll-api.cc:253 +//ivl_enum_names() +unusedFunction:t-dll-api.cc:247 +//ivl_enum_signed() +unusedFunction:t-dll-api.cc:279 +//ivl_enum_type() +unusedFunction:t-dll-api.cc:267 +//ivl_enum_width() +unusedFunction:t-dll-api.cc:273 + +//ivl_event_any() +unusedFunction:t-dll-api.cc:349 +//ivl_event_file() +unusedFunction:t-dll-api.cc:326 +//ivl_event_lineno() +unusedFunction:t-dll-api.cc:332 +//ivl_event_name() +unusedFunction:t-dll-api.cc:297 +//ivl_event_nany() +unusedFunction:t-dll-api.cc:343 +//ivl_event_neg() +unusedFunction:t-dll-api.cc:362 +//ivl_event_nneg() +unusedFunction:t-dll-api.cc:356 +//ivl_event_npos() +unusedFunction:t-dll-api.cc:369 +//ivl_event_pos() +unusedFunction:t-dll-api.cc:375 +//ivl_event_scope() +unusedFunction:t-dll-api.cc:338 + +//ivl_expr_bits() +unusedFunction:t-dll-api.cc:382 +//ivl_expr_branch() +unusedFunction:t-dll-api.cc:388 +//ivl_expr_def() +unusedFunction:t-dll-api.cc:394 +//ivl_expr_delay_val() +unusedFunction:t-dll-api.cc:410 +//ivl_expr_dvalue() +unusedFunction:t-dll-api.cc:416 +//ivl_expr_enumtype() +unusedFunction:t-dll-api.cc:422 +//ivl_expr_event() +unusedFunction:t-dll-api.cc:628 +//ivl_expr_file() +unusedFunction:t-dll-api.cc:162 +//ivl_expr_lineno() +unusedFunction:t-dll-api.cc:168 +//ivl_expr_name() +unusedFunction:t-dll-api.cc:433 +//ivl_expr_nature() +unusedFunction:t-dll-api.cc:456 +//ivl_expr_net_type() +unusedFunction:t-dll-api.cc:428 +//ivl_expr_opcode() +unusedFunction:t-dll-api.cc:462 +//ivl_expr_oper1() +unusedFunction:t-dll-api.cc:478 +//ivl_expr_oper2() +unusedFunction:t-dll-api.cc:516 +//ivl_expr_oper3() +unusedFunction:t-dll-api.cc:542 +//ivl_expr_parameter() +unusedFunction:t-dll-api.cc:556 +//ivl_expr_parm() +unusedFunction:t-dll-api.cc:571 +//ivl_expr_parms() +unusedFunction:t-dll-api.cc:598 +//ivl_expr_repeat() +unusedFunction:t-dll-api.cc:621 +//ivl_expr_scope() +unusedFunction:t-dll-api.cc:642 +//ivl_expr_sel_type() +unusedFunction:t-dll-api.cc:649 +//ivl_expr_signed() +unusedFunction:t-dll-api.cc:674 +//ivl_expr_sized() +unusedFunction:t-dll-api.cc:680 +//ivl_expr_string() +unusedFunction:t-dll-api.cc:686 +//ivl_expr_type() +unusedFunction:t-dll-api.cc:155 +//ivl_expr_uvalue() +unusedFunction:t-dll-api.cc:692 +//ivl_expr_value() +unusedFunction:t-dll-api.cc:717 +//ivl_expr_width() + +unusedFunction:t-dll-api.cc:723 +//ivl_file_table_index() +unusedFunction:t-dll-api.cc:765 +//ivl_file_table_item() +unusedFunction:t-dll-api.cc:755 +//ivl_file_table_size() +unusedFunction:t-dll-api.cc:783 + +//ivl_island_flag_set() +unusedFunction:t-dll-api.cc:792 +//ivl_island_flag_test() +unusedFunction:t-dll-api.cc:806 + +//ivl_logic_attr() +unusedFunction:t-dll-api.cc:832 +//ivl_logic_attr_cnt() +unusedFunction:t-dll-api.cc:848 +//ivl_logic_attr_val() +unusedFunction:t-dll-api.cc:853 +//ivl_logic_basename() +unusedFunction:t-dll-api.cc:901 +//ivl_logic_delay() +unusedFunction:t-dll-api.cc:936 +//ivl_logic_drive0() +unusedFunction:t-dll-api.cc:860 +//ivl_logic_drive1() +unusedFunction:t-dll-api.cc:877 +//ivl_logic_file() +unusedFunction:t-dll-api.cc:814 +//ivl_logic_is_cassign() +unusedFunction:t-dll-api.cc:826 +//ivl_logic_lineno() +unusedFunction:t-dll-api.cc:820 +//ivl_logic_name() +unusedFunction:t-dll-api.cc:894 +//ivl_logic_pins() +unusedFunction:t-dll-api.cc:918 +//ivl_logic_scope() +unusedFunction:t-dll-api.cc:907 +//ivl_logic_type() +unusedFunction:t-dll-api.cc:913 +//ivl_logic_udp() +unusedFunction:t-dll-api.cc:929 +//ivl_logic_width() +unusedFunction:t-dll-api.cc:942 + +//ivl_lpm_array() +unusedFunction:t-dll-api.cc:1059 +//ivl_lpm_aset_value() +unusedFunction:t-dll-api.cc:1110 +//ivl_lpm_async_clr() +unusedFunction:t-dll-api.cc:1005 +//ivl_lpm_async_set() +unusedFunction:t-dll-api.cc:1035 +//ivl_lpm_base() +unusedFunction:t-dll-api.cc:1071 +//ivl_lpm_basename() +unusedFunction:t-dll-api.cc:1000 +//ivl_lpm_clk() +unusedFunction:t-dll-api.cc:1098 +//ivl_lpm_data() +unusedFunction:t-dll-api.cc:1167 +//ivl_lpm_datab() +unusedFunction:t-dll-api.cc:1264 +//ivl_lpm_define() +unusedFunction:t-dll-api.cc:1133 +//ivl_lpm_delay() +unusedFunction:t-dll-api.cc:1029 +//ivl_lpm_drive0() +unusedFunction:t-dll-api.cc:1393 +//ivl_lpm_drive1() +unusedFunction:t-dll-api.cc:1410 +//ivl_lpm_enable() +unusedFunction:t-dll-api.cc:1145 +//ivl_lpm_file() +unusedFunction:t-dll-api.cc:1157 +//ivl_lpm_lineno() +unusedFunction:t-dll-api.cc:1162 +//ivl_lpm_name() +unusedFunction:t-dll-api.cc:1298 +//ivl_lpm_negedge() +unusedFunction:t-dll-api.cc:1086 +//ivl_lpm_select() +unusedFunction:t-dll-api.cc:1433 +//ivl_lpm_selects() +unusedFunction:t-dll-api.cc:1449 +//ivl_lpm_signed() +unusedFunction:t-dll-api.cc:1466 +//ivl_lpm_size() +unusedFunction:t-dll-api.cc:1525 +//ivl_lpm_sset_value() +unusedFunction:t-dll-api.cc:1121 +//ivl_lpm_string() +unusedFunction:t-dll-api.cc:1577 +//ivl_lpm_sync_clr() +unusedFunction:t-dll-api.cc:1017 +//ivl_lpm_sync_set() +unusedFunction:t-dll-api.cc:1047 +//ivl_lpm_trigger() +unusedFunction:t-dll-api.cc:1594 +//ivl_lpm_type() +unusedFunction:t-dll-api.cc:1583 +//ivl_lpm_width() +unusedFunction:t-dll-api.cc:1588 + +//ivl_lval_idx() +unusedFunction:t-dll-api.cc:1616 +//ivl_lval_mux() +unusedFunction:t-dll-api.cc:1611 +//ivl_lval_nest() +unusedFunction:t-dll-api.cc:1661 +//ivl_lval_part_off() +unusedFunction:t-dll-api.cc:1625 +//ivl_lval_property_idx() +unusedFunction:t-dll-api.cc:1643 +//ivl_lval_sel_type() +unusedFunction:t-dll-api.cc:1631 +//ivl_lval_sig() +unusedFunction:t-dll-api.cc:1649 + +//ivl_nature_name() +unusedFunction:t-dll-api.cc:1670 + +//ivl_nexus_get_private() +unusedFunction:t-dll-api.cc:1690 +//ivl_nexus_name() +unusedFunction:t-dll-api.cc:1679 +//ivl_nexus_ptr_branch() +unusedFunction:t-dll-api.cc:1733 +//ivl_nexus_ptr_con() +unusedFunction:t-dll-api.cc:1742 +//ivl_nexus_ptr_sig() +unusedFunction:t-dll-api.cc:1769 +//ivl_nexus_ptr_switch() +unusedFunction:t-dll-api.cc:1778 +//ivl_nexus_set_private() +unusedFunction:t-dll-api.cc:1696 + +//ivl_parameter_basename() +unusedFunction:t-dll-api.cc:1787 +//ivl_parameter_expr() +unusedFunction:t-dll-api.cc:1830 +//ivl_parameter_file() +unusedFunction:t-dll-api.cc:1836 +//ivl_parameter_lineno() +unusedFunction:t-dll-api.cc:1842 +//ivl_parameter_local() +unusedFunction:t-dll-api.cc:1793 +//ivl_parameter_lsb() +unusedFunction:t-dll-api.cc:1811 +//ivl_parameter_msb() +unusedFunction:t-dll-api.cc:1805 +//ivl_parameter_scope() +unusedFunction:t-dll-api.cc:1848 +//ivl_parameter_signed() +unusedFunction:t-dll-api.cc:1799 +//ivl_parameter_width() +unusedFunction:t-dll-api.cc:1821 + +//ivl_path_condit() +unusedFunction:t-dll-api.cc:1854 +//ivl_path_delay() +unusedFunction:t-dll-api.cc:1866 +//ivl_path_is_condit() +unusedFunction:t-dll-api.cc:1860 +//ivl_path_scope() +unusedFunction:t-dll-api.cc:1872 +//ivl_path_source() +unusedFunction:t-dll-api.cc:1879 +//ivl_path_source_negedge() +unusedFunction:t-dll-api.cc:1889 +//ivl_path_source_posedge() +unusedFunction:t-dll-api.cc:1884 + +//ivl_process_analog() +unusedFunction:t-dll-api.cc:1911 +//ivl_process_attr_cnt() +unusedFunction:t-dll-api.cc:1926 +//ivl_process_attr_val() +unusedFunction:t-dll-api.cc:1931 +//ivl_process_file() +unusedFunction:t-dll-api.cc:1894 +//ivl_process_lineno() +unusedFunction:t-dll-api.cc:1900 +//ivl_process_scope() +unusedFunction:t-dll-api.cc:1916 +//ivl_process_stmt() +unusedFunction:t-dll-api.cc:1921 +//ivl_process_type() +unusedFunction:t-dll-api.cc:1906 + +//ivl_scope_attr_cnt() +unusedFunction:t-dll-api.cc:1938 +//ivl_scope_attr_val() +unusedFunction:t-dll-api.cc:1944 +//ivl_scope_basename() +unusedFunction:t-dll-api.cc:1951 +//ivl_scope_child() +unusedFunction:t-dll-api.cc:1978 +//ivl_scope_children() +unusedFunction:t-dll-api.cc:1958 +//ivl_scope_childs() +unusedFunction:t-dll-api.cc:1972 +//ivl_scope_class() +unusedFunction:t-dll-api.cc:1984 +//ivl_scope_classes() +unusedFunction:t-dll-api.cc:1990 +//ivl_scope_def() +unusedFunction:t-dll-api.cc:1996 +//ivl_scope_def_file() +unusedFunction:t-dll-api.cc:2002 +//ivl_scope_def_lineno() +unusedFunction:t-dll-api.cc:2008 +//ivl_scope_enumerate() +unusedFunction:t-dll-api.cc:2020 +//ivl_scope_enumerates() +unusedFunction:t-dll-api.cc:2014 +//ivl_scope_event() +unusedFunction:t-dll-api.cc:2033 +//ivl_scope_events() +unusedFunction:t-dll-api.cc:2027 +//ivl_scope_file() +unusedFunction:t-dll-api.cc:2040 +//ivl_scope_is_auto() +unusedFunction:t-dll-api.cc:2046 +//ivl_scope_is_cell() +unusedFunction:t-dll-api.cc:2052 +//ivl_scope_lineno() +unusedFunction:t-dll-api.cc:2058 +//ivl_scope_log() +unusedFunction:t-dll-api.cc:2070 +//ivl_scope_logs() +unusedFunction:t-dll-api.cc:2064 +//ivl_scope_lpm() +unusedFunction:t-dll-api.cc:2083 +//ivl_scope_lpms() +unusedFunction:t-dll-api.cc:2077 +//ivl_scope_mod_module_port_name() +unusedFunction:t-dll-api.cc:2160 +//ivl_scope_mod_module_port_type() +unusedFunction:t-dll-api.cc:2169 +//ivl_scope_mod_module_port_width() +unusedFunction:t-dll-api.cc:2180 +//ivl_scope_mod_module_ports() +unusedFunction:t-dll-api.cc:2153 +//ivl_scope_mod_port() +unusedFunction:t-dll-api.cc:2204 +//ivl_scope_param() +unusedFunction:t-dll-api.cc:2139 +//ivl_scope_params() +unusedFunction:t-dll-api.cc:2133 +//ivl_scope_parent() +unusedFunction:t-dll-api.cc:2146 +//ivl_scope_port() +unusedFunction:t-dll-api.cc:2195 +//ivl_scope_ports() +unusedFunction:t-dll-api.cc:2186 +//ivl_scope_sig() +unusedFunction:t-dll-api.cc:2218 +//ivl_scope_sigs() +unusedFunction:t-dll-api.cc:2212 +//ivl_scope_switch() +unusedFunction:t-dll-api.cc:2231 +//ivl_scope_switches() +unusedFunction:t-dll-api.cc:2225 +//ivl_scope_time_precision() +unusedFunction:t-dll-api.cc:2238 +//ivl_scope_time_units() +unusedFunction:t-dll-api.cc:2244 +//ivl_scope_tname() +unusedFunction:t-dll-api.cc:2256 +//ivl_scope_type() +unusedFunction:t-dll-api.cc:2250 + +//ivl_signal_array_addr_swapped() +unusedFunction:t-dll-api.cc:2272 +//ivl_signal_array_base() +unusedFunction:t-dll-api.cc:2262 +//ivl_signal_array_count() +unusedFunction:t-dll-api.cc:2267 +//ivl_signal_attr() +unusedFunction:t-dll-api.cc:2287 +//ivl_signal_attr_cnt() +unusedFunction:t-dll-api.cc:2302 +//ivl_signal_attr_val() +unusedFunction:t-dll-api.cc:2307 +//ivl_signal_basename() +unusedFunction:t-dll-api.cc:2313 +//ivl_signal_data_type() +unusedFunction:t-dll-api.cc:2447 +//ivl_signal_dimensions() +unusedFunction:t-dll-api.cc:2277 +//ivl_signal_discipline() +unusedFunction:t-dll-api.cc:2282 +//ivl_signal_file() +unusedFunction:t-dll-api.cc:2425 +//ivl_signal_forced_net() +unusedFunction:t-dll-api.cc:2420 +//ivl_signal_integer() +unusedFunction:t-dll-api.cc:2437 +//ivl_signal_lineno() +unusedFunction:t-dll-api.cc:2431 +//ivl_signal_local() +unusedFunction:t-dll-api.cc:2410 +//ivl_signal_lsb() +unusedFunction:t-dll-api.cc:2380 +//ivl_signal_module_port_index() +unusedFunction:t-dll-api.cc:2405 +//ivl_signal_msb() +unusedFunction:t-dll-api.cc:2371 +//ivl_signal_name() +unusedFunction:t-dll-api.cc:2318 +//ivl_signal_nex() +unusedFunction:t-dll-api.cc:2338 +//ivl_signal_npath() +unusedFunction:t-dll-api.cc:2457 +//ivl_signal_packed_dimensions() +unusedFunction:t-dll-api.cc:2354 +//ivl_signal_packed_lsb() +unusedFunction:t-dll-api.cc:2365 +//ivl_signal_packed_msb() +unusedFunction:t-dll-api.cc:2359 +//ivl_signal_path() +unusedFunction:t-dll-api.cc:2462 +//ivl_signal_port() +unusedFunction:t-dll-api.cc:2400 +//ivl_signal_scope() +unusedFunction:t-dll-api.cc:2389 +//ivl_signal_signed() +unusedFunction:t-dll-api.cc:2415 +//ivl_signal_width() +unusedFunction:t-dll-api.cc:2395 + +//ivl_statement_type() +unusedFunction:t-dll-api.cc:2473 + +//ivl_stmt_block_count() +unusedFunction:t-dll-api.cc:2502 +//ivl_stmt_block_scope() +unusedFunction:t-dll-api.cc:2488 +//ivl_stmt_block_stmt() +unusedFunction:t-dll-api.cc:2516 +//ivl_stmt_call() +unusedFunction:t-dll-api.cc:2531 +//ivl_stmt_case_count() +unusedFunction:t-dll-api.cc:2551 +//ivl_stmt_case_expr() +unusedFunction:t-dll-api.cc:2565 +//ivl_stmt_case_stmt() +unusedFunction:t-dll-api.cc:2581 +//ivl_stmt_cond_expr() +unusedFunction:t-dll-api.cc:2597 +//ivl_stmt_cond_false() +unusedFunction:t-dll-api.cc:2623 +//ivl_stmt_cond_true() +unusedFunction:t-dll-api.cc:2632 +//ivl_stmt_delay_expr() +unusedFunction:t-dll-api.cc:2641 +//ivl_stmt_delay_val() +unusedFunction:t-dll-api.cc:2657 +//ivl_stmt_events() +unusedFunction:t-dll-api.cc:2681 +//ivl_stmt_file() +unusedFunction:t-dll-api.cc:2478 +//ivl_stmt_lexp() +unusedFunction:t-dll-api.cc:2708 +//ivl_stmt_lineno() +unusedFunction:t-dll-api.cc:2483 +//ivl_stmt_lval() +unusedFunction:t-dll-api.cc:2719 +//ivl_stmt_lvals() +unusedFunction:t-dll-api.cc:2737 +//ivl_stmt_lwidth() +unusedFunction:t-dll-api.cc:2754 +//ivl_stmt_name() +unusedFunction:t-dll-api.cc:2786 +//ivl_stmt_nevent() +unusedFunction:t-dll-api.cc:2663 +//ivl_stmt_opcode() +unusedFunction:t-dll-api.cc:2798 +//ivl_stmt_parm() +unusedFunction:t-dll-api.cc:2809 +//ivl_stmt_parm_count() +unusedFunction:t-dll-api.cc:2822 +//ivl_stmt_rval() +unusedFunction:t-dll-api.cc:2833 +//ivl_stmt_sfunc_as_task() +unusedFunction:t-dll-api.cc:2850 +//ivl_stmt_sub_stmt() +unusedFunction:t-dll-api.cc:2862 + +//ivl_switch_a() +unusedFunction:t-dll-api.cc:2899 +//ivl_switch_b() +unusedFunction:t-dll-api.cc:2904 +//ivl_switch_basename() +unusedFunction:t-dll-api.cc:2884 +//ivl_switch_delay() +unusedFunction:t-dll-api.cc:2929 +//ivl_switch_enable() +unusedFunction:t-dll-api.cc:2909 +//ivl_switch_file() +unusedFunction:t-dll-api.cc:2935 +//ivl_switch_island() +unusedFunction:t-dll-api.cc:2940 +//ivl_switch_lineno() +unusedFunction:t-dll-api.cc:2945 +//ivl_switch_offset() +unusedFunction:t-dll-api.cc:2924 +//ivl_switch_part() +unusedFunction:t-dll-api.cc:2919 +//ivl_switch_scope() +unusedFunction:t-dll-api.cc:2889 +//ivl_switch_type() +unusedFunction:t-dll-api.cc:2894 +//ivl_switch_width() +unusedFunction:t-dll-api.cc:2914 + +//ivl_type_base() +unusedFunction:t-dll-api.cc:2950 +//ivl_type_element() +unusedFunction:t-dll-api.cc:2956 +//ivl_type_name() +unusedFunction:t-dll-api.cc:2985 +//ivl_type_packed_dimensions() +unusedFunction:t-dll-api.cc:2965 +//ivl_type_packed_lsb() +unusedFunction:t-dll-api.cc:2971 +//ivl_type_packed_msb() +unusedFunction:t-dll-api.cc:2978 +//ivl_type_prop_type() +unusedFunction:t-dll-api.cc:3011 +//ivl_type_properties() +unusedFunction:t-dll-api.cc:2994 +//ivl_type_signed() +unusedFunction:t-dll-api.cc:3019 + +//ivl_udp_file() +unusedFunction:t-dll-api.cc:990 +//ivl_udp_init() +unusedFunction:t-dll-api.cc:958 +//ivl_udp_lineno() +unusedFunction:t-dll-api.cc:995 +//ivl_udp_name() +unusedFunction:t-dll-api.cc:984 +//ivl_udp_nin() +unusedFunction:t-dll-api.cc:953 +//ivl_udp_port() +unusedFunction:t-dll-api.cc:963 +//ivl_udp_row() +unusedFunction:t-dll-api.cc:971 +//ivl_udp_rows() +unusedFunction:t-dll-api.cc:979 +// ivl_udp_sequ() +unusedFunction:t-dll-api.cc:948 + diff --git a/net_assign.cc b/net_assign.cc index 1467ee961..c46a8aa2a 100644 --- a/net_assign.cc +++ b/net_assign.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2011 Stephen Williams (steve@icarus.com) + * Copyright (c) 2000-2015 Stephen Williams (steve@icarus.com) * * This source code is free software; you can redistribute it * and/or modify it in source code form under the terms of the GNU @@ -42,7 +42,9 @@ unsigned count_lval_width(const NetAssign_*idx) NetAssign_::NetAssign_(NetAssign_*n) : nest_(n), sig_(0), word_(0), base_(0), sel_type_(IVL_SEL_OTHER) { + lwid_ = 0; more = 0; + turn_sig_to_wire_on_release_ = false; } NetAssign_::NetAssign_(NetNet*s) diff --git a/net_proc.cc b/net_proc.cc index 2aedec7c2..a69dcabbf 100644 --- a/net_proc.cc +++ b/net_proc.cc @@ -1,5 +1,5 @@ /* - * Copyright (c) 2000-2014 Stephen Williams (steve@icarus.com) + * Copyright (c) 2000-2015 Stephen Williams (steve@icarus.com) * * This source code is free software; you can redistribute it * and/or modify it in source code form under the terms of the GNU @@ -188,6 +188,7 @@ NetForever::~NetForever() NetForLoop::NetForLoop(NetNet*ind, NetExpr*iexpr, NetExpr*cond, NetProc*sub, NetProc*step) : index_(ind), init_expr_(iexpr), condition_(cond), statement_(sub), step_statement_(step) { + as_block_ = NULL; } void NetForLoop::wrap_up() From eb8ad92422318047b1858e2297cbb9da2fd18d54 Mon Sep 17 00:00:00 2001 From: Cary R Date: Sat, 19 Dec 2015 19:55:54 -0800 Subject: [PATCH 3/4] Add cppcheck suppressions for libveriuser --- libveriuser/Makefile.in | 3 +- libveriuser/cppcheck.sup | 187 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 189 insertions(+), 1 deletion(-) create mode 100644 libveriuser/cppcheck.sup diff --git a/libveriuser/Makefile.in b/libveriuser/Makefile.in index 868f3e257..bdc09330f 100644 --- a/libveriuser/Makefile.in +++ b/libveriuser/Makefile.in @@ -76,7 +76,8 @@ distclean: clean rm -f config.h stamp-config-h cppcheck: $(O:.o=.c) - cppcheck --enable=all -f $(INCLUDE_PATH) $^ + cppcheck --enable=all -f --suppressions-list=$(srcdir)/cppcheck.sup \ + --relative-paths=$(srcdir) $(INCLUDE_PATH) $^ Makefile: $(srcdir)/Makefile.in cd ..; ./config.status --file=libveriuser/$@ diff --git a/libveriuser/cppcheck.sup b/libveriuser/cppcheck.sup new file mode 100644 index 000000000..3fd3b2bb5 --- /dev/null +++ b/libveriuser/cppcheck.sup @@ -0,0 +1,187 @@ +// These are the functions that the runtime exports. + +// The ACC functions. + +// acc_close() +unusedFunction:a_close.c:23 +// acc_compare_handles() +unusedFunction:a_compare_handles.c:23 +// acc_configure() +unusedFunction:a_configure.c:25 + +// acc_fetch_argc() +unusedFunction:a_fetch_argc.c:27 +// acc_fetch_argv() +unusedFunction:a_fetch_argv.c:27 +// acc_fetch_defname() +unusedFunction:a_fetch_fullname.c:37 +// acc_fetch_direction() +unusedFunction:a_fetch_dir.c:26 +// acc_fetch_fulltype() +unusedFunction:a_fetch_type.c:66 +// acc_fetch_itfarg() +unusedFunction:a_fetch_tfarg.c:27 +// acc_fetch_location() +unusedFunction:a_fetch_location.c:23 +// acc_fetch_name() +unusedFunction:a_fetch_fullname.c:32 +// acc_fetch_paramtype() +unusedFunction:a_fetch_type_str.c:47 +// acc_fetch_paramval() +unusedFunction:a_fetch_param.c:25 +// acc_fetch_range() +unusedFunction:a_fetch_range.c:26 +// acc_fetch_size() +unusedFunction:a_fetch_type.c:24 +// acc_fetch_tfarg() +unusedFunction:a_fetch_tfarg.c:56 +// acc_fetch_tfarg_int() +unusedFunction:a_fetch_tfarg.c:91 +// acc_fetch_timescale_info() +unusedFunction:a_fetch_time.c:24 +// acc_fetch_type() +unusedFunction:a_fetch_type.c:29 +// acc_fetch_type_str() +unusedFunction:a_fetch_type_str.c:24 +// acc_fetch_value() +unusedFunction:a_fetch_value.c:115 + +// acc_handle_by_name() +unusedFunction:a_handle_by_name.c:29 +// acc_handle_hiconn() +unusedFunction:a_handle_hiconn.c:26 +// acc_handle_object() +unusedFunction:a_handle_object.c:26 +// acc_handle_parent() +unusedFunction:a_handle_parent.c:24 +// acc_handle_scope() +unusedFunction:a_handle_parent.c:34 +// acc_handle_simulated_net() +unusedFunction:a_handle_simulated_net.c:26 +// acc_handle_tfarg() +unusedFunction:a_handle_tfarg.c:26 +// acc_handle_tfinst() +unusedFunction:a_handle_tfarg.c:53 + +// acc_initialize() +unusedFunction:a_initialize.c:24 + +// acc_next_bit() +unusedFunction:a_next_bit.c:26 +// acc_next_port() +unusedFunction:a_next_port.c:26 +// acc_next_scope() +unusedFunction:a_next.c:86 +// acc_next_topmod() +unusedFunction:a_next_topmod.c:30 + +// acc_product_version() +unusedFunction:a_product_version.c:23 + +// acc_set_scope() +unusedFunction:a_handle_object.c:40 + +// acc_set_value() +unusedFunction:a_set_value.c:27 + +// acc_vcl_add() +unusedFunction:a_vcl.c:157 +// acc_vcl_delete() +unusedFunction:a_vcl.c:196 + +// acc_version() +unusedFunction:a_version.c:23 + +// These are the TF routines. + +// io_printf() +unusedFunction:io_print.c:26 + +// mc_scan_plusargs() +unusedFunction:mc_scan_plusargs.c:27 + +// tf_asynchoff() +unusedFunction:asynch.c:34 +// tf_asynchon() +unusedFunction:asynch.c:28 +// tf_dofinish() +unusedFunction:finish.c:26 +// tf_dostop() +unusedFunction:finish.c:32 +// tf_error() +unusedFunction:io_print.c:45 +// tf_exprinfo() +unusedFunction:exprinfo.c:26 +// tf_getcstringp() +unusedFunction:getcstringp.c:26 +// tf_getlongp() +unusedFunction:getlongp.c:29 +// tf_getlongtime() +unusedFunction:getsimtime.c:112 +// tf_getp() +unusedFunction:getp.c:73 +// tf_getrealp() +unusedFunction:getp.c:120 +// tf_gettime() +unusedFunction:getsimtime.c:77 +// tf_getworkarea() +unusedFunction:workarea.c:62 +// tf_igettimeprecision() +unusedFunction:getsimtime.c:198 +// tf_igettimeunit() +unusedFunction:getsimtime.c:228 +// tf_long_to_real() +unusedFunction:math.c:47 +// tf_message() +unusedFunction:io_print.c:56 +// tf_mipname() +unusedFunction:spname.c:47 +// tf_multiply_long() +unusedFunction:math.c:27 +// tf_nodeinfo() +unusedFunction:nodeinfo.c:27 +// tf_nump() +unusedFunction:nump.c:42 +// tf_putlongp() +unusedFunction:putlongp.c:28 +// tf_putp() +unusedFunction:putp.c:88 +// tf_putrealp() +unusedFunction:putp.c:137 +// tf_real_to_long() +unusedFunction:math.c:40 +// tf_rosynchronize() +unusedFunction:veriusertfs.c:391 +// tf_scale_longdelay() +unusedFunction:getsimtime.c:136 +// tf_scale_realdelay() +unusedFunction:getsimtime.c:161 +// tf_setdelay() +unusedFunction:delay.c:75 +// tf_setrealdelay() +unusedFunction:veriusertfs.c:426 +// tf_setworkarea() +unusedFunction:workarea.c:36 +// tf_spname() +unusedFunction:spname.c:25 +// tf_strgetp() +unusedFunction:getp.c:177 +// tf_strgettime() +unusedFunction:getsimtime.c:85 +// tf_synchronize() +unusedFunction:veriusertfs.c:364 +// tf_typep() +unusedFunction:typep.c:24 +// tf_unscale_longdelay() +unusedFunction:getsimtime.c:144 +// tf_unscale_realdelay() +unusedFunction:getsimtime.c:171 +// tf_warning() +unusedFunction:io_print.c:34 + +// Non-standard TF routines the Icarus provides. + +// tf_getlongsimtime() +unusedFunction:getsimtime.c:126 +// veriusertfs_register_table() +unusedFunction:veriusertfs.c:76 From 3b7ebf6aa2bcbd10c1119064f4481095b3e4d186 Mon Sep 17 00:00:00 2001 From: Cary R Date: Sun, 20 Dec 2015 12:27:41 -0800 Subject: [PATCH 4/4] If ret is already defined then don't overwrite it. --- pform.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pform.cc b/pform.cc index 2f3431589..2b9e2f9a9 100644 --- a/pform.cc +++ b/pform.cc @@ -2777,7 +2777,9 @@ vector*pform_make_task_ports(const struct vlltype&loc, ret = do_make_task_ports(loc, pt, IVL_VT_CLASS, class_type, names); } - ret = do_make_task_ports(loc, pt, IVL_VT_NO_TYPE, vtype, names); + if (! ret) { + ret = do_make_task_ports(loc, pt, IVL_VT_NO_TYPE, vtype, names); + } if (unpacked_dims) { for (list::iterator cur = names->begin()