Suppress warnings for empty `select` arguments when `-count` or `-assert-*` options...
authorAlberto Gonzalez <boqwxp@airmail.cc>
Mon, 23 Mar 2020 06:31:41 +0000 (06:31 +0000)
committerAlberto Gonzalez <boqwxp@airmail.cc>
Mon, 23 Mar 2020 17:30:53 +0000 (17:30 +0000)
passes/cmds/select.cc
tests/select/no_warn_assert.ys [new file with mode: 0644]

index 42938b6ba386a54f20467d67581a13c65884da22..fc693d20ecc2f7e8689a6e4f1bc855a256e3a37e 100644 (file)
@@ -625,7 +625,7 @@ static void select_filter_active_mod(RTLIL::Design *design, RTLIL::Selection &se
        }
 }
 
-static void select_stmt(RTLIL::Design *design, std::string arg)
+static void select_stmt(RTLIL::Design *design, std::string arg, bool disable_empty_warning = false)
 {
        std::string arg_mod, arg_memb;
        std::unordered_map<std::string, bool> arg_mod_found;
@@ -913,12 +913,12 @@ static void select_stmt(RTLIL::Design *design, std::string arg)
        select_filter_active_mod(design, work_stack.back());
 
        for (auto &it : arg_mod_found) {
-               if (it.second == false) {
+               if (it.second == false && !disable_empty_warning) {
                        log_warning("Selection \"%s\" did not match any module.\n", it.first.c_str());
                }
        }
        for (auto &it : arg_memb_found) {
-               if (it.second == false) {
+               if (it.second == false && !disable_empty_warning) {
                        log_warning("Selection \"%s\" did not match any object.\n", it.first.c_str());
                }
        }
@@ -1311,7 +1311,8 @@ struct SelectPass : public Pass {
                        }
                        if (arg.size() > 0 && arg[0] == '-')
                                log_cmd_error("Unknown option %s.\n", arg.c_str());
-                       select_stmt(design, arg);
+                       bool disable_empty_warning = count_mode || assert_none || assert_any || (assert_count != -1) || (assert_max != -1) || (assert_min != -1);
+                       select_stmt(design, arg, disable_empty_warning);
                        sel_str += " " + arg;
                }
 
diff --git a/tests/select/no_warn_assert.ys b/tests/select/no_warn_assert.ys
new file mode 100644 (file)
index 0000000..8893158
--- /dev/null
@@ -0,0 +1,2 @@
+logger -expect-no-warnings
+select -assert-count 0 top/t:ff4 top/w:d0 %co:+[d] %i