From 0d9beb5b2eec3ba839faa58a1a775311d9c3376c Mon Sep 17 00:00:00 2001 From: Rupert Swarbrick Date: Wed, 27 May 2020 09:33:49 +0100 Subject: [PATCH] Silence warning in select.cc With GCC 9.3, at least, compiling select.cc spits out a warning about an implausible bound being passed to strncmp. This comes from inlining IdString::compare(): it turns out that passing std::string::npos as a bound to strncmp triggers it. This patch replaces the compare call with a memcmp with the same effect. The repeated calls to IdString::c_str are slightly inefficient, but I'll address that in a follow-up commit. --- passes/cmds/select.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/passes/cmds/select.cc b/passes/cmds/select.cc index 6e728c16f..c5ef72b1c 100644 --- a/passes/cmds/select.cc +++ b/passes/cmds/select.cc @@ -34,7 +34,10 @@ static bool match_ids(RTLIL::IdString id, std::string pattern) { if (id == pattern) return true; - if (id.size() > 0 && id[0] == '\\' && id.compare(1, std::string::npos, pattern.c_str()) == 0) + const char *id_c = id.c_str(); + if (*id_c == '\\' && + id.size() == 1 + pattern.size() && + memcmp(id_c + 1, pattern.c_str(), pattern.size()) == 0) return true; if (patmatch(pattern.c_str(), id.c_str())) return true; -- 2.30.2