diff --git a/frontends/ast/ast.h b/frontends/ast/ast.h index f7f087080..2c2d408ce 100644 --- a/frontends/ast/ast.h +++ b/frontends/ast/ast.h @@ -177,7 +177,7 @@ namespace AST { // for dict<> and pool<> unsigned int hashidx_; - Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } // this nodes type AstNodeType type; diff --git a/kernel/bitpattern.h b/kernel/bitpattern.h index a9dc98a33..821490dca 100644 --- a/kernel/bitpattern.h +++ b/kernel/bitpattern.h @@ -43,7 +43,7 @@ struct BitPatternPool return false; return bitdata == other.bitdata; } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { if (!cached_hash) cached_hash = run_hash(bitdata); h.eat(cached_hash); diff --git a/kernel/cellaigs.h b/kernel/cellaigs.h index dd1b6dde6..f6afcde5e 100644 --- a/kernel/cellaigs.h +++ b/kernel/cellaigs.h @@ -34,7 +34,7 @@ struct AigNode AigNode(); bool operator==(const AigNode &other) const; - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; }; struct Aig @@ -44,7 +44,7 @@ struct Aig Aig(Cell *cell); bool operator==(const Aig &other) const; - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; }; YOSYS_NAMESPACE_END diff --git a/kernel/drivertools.h b/kernel/drivertools.h index 23eba9f1c..d46217da5 100644 --- a/kernel/drivertools.h +++ b/kernel/drivertools.h @@ -74,7 +74,7 @@ struct DriveBitWire return offset < other.offset; } - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; operator SigBit() const @@ -105,7 +105,7 @@ struct DriveBitPort return offset < other.offset; } - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; }; @@ -129,7 +129,7 @@ struct DriveBitMarker return offset < other.offset; } - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; }; @@ -164,7 +164,7 @@ public: return multiple_ == other.multiple_; } - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; }; struct DriveBit @@ -352,7 +352,7 @@ public: return *this; } - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; bool operator==(const DriveBit &other) const { @@ -473,7 +473,7 @@ struct DriveChunkWire return offset < other.offset; } - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; explicit operator SigChunk() const { @@ -531,7 +531,7 @@ struct DriveChunkPort return offset < other.offset; } - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; }; @@ -572,7 +572,7 @@ struct DriveChunkMarker return offset < other.offset; } - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; }; struct DriveChunkMultiple @@ -612,7 +612,7 @@ public: return false; // TODO implement, canonicalize order } - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; }; struct DriveChunk @@ -863,7 +863,7 @@ public: bool try_append(DriveBit const &bit); bool try_append(DriveChunk const &chunk); - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; bool operator==(const DriveChunk &other) const { @@ -1074,7 +1074,7 @@ public: hash_ |= (hash_ == 0); } - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; bool operator==(DriveSpec const &other) const { updhash(); @@ -1112,7 +1112,7 @@ private: bool operator==(const DriveBitId &other) const { return id == other.id; } bool operator!=(const DriveBitId &other) const { return id != other.id; } bool operator<(const DriveBitId &other) const { return id < other.id; } - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; }; // Essentially a dict> but using less memory // and fewer allocations diff --git a/kernel/functional.h b/kernel/functional.h index e13282140..7e5becef4 100644 --- a/kernel/functional.h +++ b/kernel/functional.h @@ -151,7 +151,7 @@ namespace Functional { // returns the data width of a bitvector sort, errors out for other sorts int data_width() const { return std::get<1>(_v).second; } bool operator==(Sort const& other) const { return _v == other._v; } - Hasher hash_into(Hasher h) const { h.eat(_v); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(_v); return h; } }; class IR; class Factory; @@ -225,7 +225,7 @@ namespace Functional { const RTLIL::Const &as_const() const { return std::get(_extra); } std::pair as_idstring_pair() const { return std::get>(_extra); } int as_int() const { return std::get(_extra); } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat((unsigned int) _fn); h.eat(_extra); return h; diff --git a/kernel/hashlib.h b/kernel/hashlib.h index ff33c3db3..4acfa7f2d 100644 --- a/kernel/hashlib.h +++ b/kernel/hashlib.h @@ -162,7 +162,7 @@ struct hash_ops { static inline bool cmp(const T &a, const T &b) { return a == b; } - static inline Hasher hash_into(const T &a, Hasher h) { + [[nodiscard]] static inline Hasher hash_into(const T &a, Hasher h) { if constexpr (std::is_integral_v) { static_assert(sizeof(T) <= sizeof(uint64_t)); if (sizeof(T) == sizeof(uint64_t)) @@ -189,7 +189,7 @@ template struct hash_ops> { static inline bool cmp(std::pair a, std::pair b) { return a == b; } - static inline Hasher hash_into(std::pair a, Hasher h) { + [[nodiscard]] static inline Hasher hash_into(std::pair a, Hasher h) { h = hash_ops

::hash_into(a.first, h); h = hash_ops::hash_into(a.second, h); return h; @@ -217,7 +217,7 @@ template struct hash_ops> { static inline bool cmp(std::vector a, std::vector b) { return a == b; } - static inline Hasher hash_into(std::vector a, Hasher h) { + [[nodiscard]] static inline Hasher hash_into(std::vector a, Hasher h) { h.eat((uint32_t)a.size()); for (auto k : a) h.eat(k); @@ -229,7 +229,7 @@ template struct hash_ops> { static inline bool cmp(std::array a, std::array b) { return a == b; } - static inline Hasher hash_into(std::array a, Hasher h) { + [[nodiscard]] static inline Hasher hash_into(std::array a, Hasher h) { for (const auto& k : a) h = hash_ops::hash_into(k, h); return h; @@ -240,7 +240,7 @@ struct hash_cstr_ops { static inline bool cmp(const char *a, const char *b) { return strcmp(a, b) == 0; } - static inline Hasher hash_into(const char *a, Hasher h) { + [[nodiscard]] static inline Hasher hash_into(const char *a, Hasher h) { while (*a) h.hash32(*(a++)); return h; @@ -253,7 +253,7 @@ struct hash_ptr_ops { static inline bool cmp(const void *a, const void *b) { return a == b; } - static inline Hasher hash_into(const void *a, Hasher h) { + [[nodiscard]] static inline Hasher hash_into(const void *a, Hasher h) { return hash_ops::hash_into((uintptr_t)a, h); } }; @@ -263,7 +263,7 @@ struct hash_obj_ops { return a == b; } template - static inline Hasher hash_into(const T *a, Hasher h) { + [[nodiscard]] static inline Hasher hash_into(const T *a, Hasher h) { if (a) h = a->hash_into(h); else @@ -295,7 +295,7 @@ template<> struct hash_ops { static inline bool cmp(std::monostate a, std::monostate b) { return a == b; } - static inline Hasher hash_into(std::monostate, Hasher h) { + [[nodiscard]] static inline Hasher hash_into(std::monostate, Hasher h) { return h; } }; @@ -304,7 +304,7 @@ template struct hash_ops> { static inline bool cmp(std::variant a, std::variant b) { return a == b; } - static inline Hasher hash_into(std::variant a, Hasher h) { + [[nodiscard]] static inline Hasher hash_into(std::variant a, Hasher h) { std::visit([& h](const auto &v) { h.eat(v); }, a); h.eat(a.index()); return h; @@ -315,7 +315,7 @@ template struct hash_ops> { static inline bool cmp(std::optional a, std::optional b) { return a == b; } - static inline Hasher hash_into(std::optional a, Hasher h) { + [[nodiscard]] static inline Hasher hash_into(std::optional a, Hasher h) { if(a.has_value()) h.eat(*a); else @@ -788,7 +788,7 @@ public: return !operator==(other); } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { for (auto &it : entries) { Hasher entry_hash; entry_hash.eat(it.udata.first); @@ -1158,7 +1158,7 @@ public: return !operator==(other); } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { for (auto &it : entries) { h.commutative_eat(ops.hash(it.udata).yield()); } diff --git a/kernel/modtools.h b/kernel/modtools.h index 921df304c..27ba98d7d 100644 --- a/kernel/modtools.h +++ b/kernel/modtools.h @@ -48,7 +48,7 @@ struct ModIndex : public RTLIL::Monitor return cell == other.cell && port == other.port && offset == other.offset; } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(cell->name); h.eat(port); h.eat(offset); @@ -321,7 +321,7 @@ struct ModWalker return cell == other.cell && port == other.port && offset == other.offset; } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(cell->name); h.eat(port); h.eat(offset); diff --git a/kernel/rtlil.h b/kernel/rtlil.h index 330af649f..ce66c5af5 100644 --- a/kernel/rtlil.h +++ b/kernel/rtlil.h @@ -362,7 +362,7 @@ struct RTLIL::IdString *this = IdString(); } - Hasher hash_into(Hasher h) const { return hash_ops::hash_into(index_, h); } + [[nodiscard]] Hasher hash_into(Hasher h) const { return hash_ops::hash_into(index_, h); } Hasher hash_top() const { Hasher h; @@ -821,7 +821,7 @@ public: bv.resize(width, bv.empty() ? RTLIL::State::Sx : bv.back()); } - inline Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(size()); for (auto b : *this) h.eat(b); @@ -914,7 +914,7 @@ struct RTLIL::SigBit bool operator <(const RTLIL::SigBit &other) const; bool operator ==(const RTLIL::SigBit &other) const; bool operator !=(const RTLIL::SigBit &other) const; - Hasher hash_into(Hasher h) const; + [[nodiscard]] Hasher hash_into(Hasher h) const; Hasher hash_top() const; }; @@ -1115,7 +1115,7 @@ public: operator std::vector() const { return bits(); } const RTLIL::SigBit &at(int offset, const RTLIL::SigBit &defval) { return offset < width_ ? (*this)[offset] : defval; } - Hasher hash_into(Hasher h) const { if (!hash_) updhash(); h.eat(hash_); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { if (!hash_) updhash(); h.eat(hash_); return h; } #ifndef NDEBUG void check(Module *mod = nullptr) const; @@ -1157,7 +1157,7 @@ struct RTLIL::Selection struct RTLIL::Monitor { Hasher::hash_t hashidx_; - Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } Monitor() { static unsigned int hashidx_count = 123456789; @@ -1180,7 +1180,7 @@ struct define_map_t; struct RTLIL::Design { Hasher::hash_t hashidx_; - Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } pool monitors; dict scratchpad; @@ -1285,7 +1285,7 @@ struct RTLIL::Design struct RTLIL::Module : public RTLIL::AttrObject { Hasher::hash_t hashidx_; - Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } protected: void add(RTLIL::Wire *wire); @@ -1640,7 +1640,7 @@ void dump_wire(std::ostream &f, std::string indent, const RTLIL::Wire *wire); struct RTLIL::Wire : public RTLIL::AttrObject { Hasher::hash_t hashidx_; - Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } protected: // use module->addWire() and module->remove() to create or destroy wires @@ -1679,7 +1679,7 @@ inline int GetSize(RTLIL::Wire *wire) { struct RTLIL::Memory : public RTLIL::AttrObject { Hasher::hash_t hashidx_; - Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } Memory(); @@ -1694,7 +1694,7 @@ struct RTLIL::Memory : public RTLIL::AttrObject struct RTLIL::Cell : public RTLIL::AttrObject { Hasher::hash_t hashidx_; - Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } protected: // use module->addCell() and module->remove() to create or destroy cells @@ -1804,7 +1804,7 @@ struct RTLIL::SyncRule struct RTLIL::Process : public RTLIL::AttrObject { Hasher::hash_t hashidx_; - Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(hashidx_); return h; } protected: // use module->addProcess() and module->remove() to create or destroy processes diff --git a/kernel/scopeinfo.h b/kernel/scopeinfo.h index f3ae0d7b6..703dc315f 100644 --- a/kernel/scopeinfo.h +++ b/kernel/scopeinfo.h @@ -169,7 +169,7 @@ public: return !(*this == other); } - Hasher hash_into(Hasher h) const + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(scope_name); h.eat(target); @@ -325,7 +325,7 @@ struct ModuleItem { Cell *cell() const { return type == Type::Cell ? static_cast(ptr) : nullptr; } bool operator==(const ModuleItem &other) const { return ptr == other.ptr && type == other.type; } - Hasher hash_into(Hasher h) const { h.eat(ptr); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(ptr); return h; } }; static inline void log_dump_val_worker(typename IdTree::Cursor cursor ) { log("%p %s", cursor.target, log_id(cursor.scope_name)); } diff --git a/kernel/sigtools.h b/kernel/sigtools.h index a22685ee2..3b0d7b40d 100644 --- a/kernel/sigtools.h +++ b/kernel/sigtools.h @@ -29,7 +29,7 @@ struct SigPool struct bitDef_t : public std::pair { bitDef_t() : std::pair(NULL, 0) { } bitDef_t(const RTLIL::SigBit &bit) : std::pair(bit.wire, bit.offset) { } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(first->name); h.eat(second); return h; @@ -147,7 +147,7 @@ struct SigSet struct bitDef_t : public std::pair { bitDef_t() : std::pair(NULL, 0) { } bitDef_t(const RTLIL::SigBit &bit) : std::pair(bit.wire, bit.offset) { } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(first->name); h.eat(second); return h; diff --git a/kernel/timinginfo.h b/kernel/timinginfo.h index 677bbecb8..ff60415bd 100644 --- a/kernel/timinginfo.h +++ b/kernel/timinginfo.h @@ -44,7 +44,7 @@ struct TimingInfo return {}; return port[offset]; } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(name); h.eat(offset); return h; @@ -56,7 +56,7 @@ struct TimingInfo BitBit(const NameBit &first, const NameBit &second) : first(first), second(second) {} BitBit(const SigBit &first, const SigBit &second) : first(first), second(second) {} bool operator==(const BitBit& bb) const { return bb.first == first && bb.second == second; } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(first); h.eat(second); return h; diff --git a/kernel/yosys_common.h b/kernel/yosys_common.h index 25a97a8dd..b1d9ce1e6 100644 --- a/kernel/yosys_common.h +++ b/kernel/yosys_common.h @@ -171,7 +171,7 @@ struct shared_str { const char *c_str() const { return content->c_str(); } const string &str() const { return *content; } bool operator==(const shared_str &other) const { return *content == *other.content; } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(*content); return h; } diff --git a/kernel/yw.h b/kernel/yw.h index 3c3b4fd40..34c688a09 100644 --- a/kernel/yw.h +++ b/kernel/yw.h @@ -35,7 +35,7 @@ struct IdPath : public std::vector bool has_address() const { int tmp; return get_address(tmp); }; bool get_address(int &addr) const; - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(static_cast&&>(*this)); return h; } diff --git a/passes/cmds/dft_tag.cc b/passes/cmds/dft_tag.cc index cecab4d61..ba7d14323 100644 --- a/passes/cmds/dft_tag.cc +++ b/passes/cmds/dft_tag.cc @@ -47,7 +47,7 @@ struct DftTagWorker { bool operator<(const tag_set &other) const { return index < other.index; } bool operator==(const tag_set &other) const { return index == other.index; } - Hasher hash_into(Hasher h) const { h.eat(index); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(index); return h; } bool empty() const { return index == 0; } }; diff --git a/passes/cmds/example_dt.cc b/passes/cmds/example_dt.cc index 5f5246de6..2870e062b 100644 --- a/passes/cmds/example_dt.cc +++ b/passes/cmds/example_dt.cc @@ -52,7 +52,7 @@ struct ExampleDtPass : public Pass return name == other.name && parameters == other.parameters; } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(name); h.eat(parameters); return h; diff --git a/passes/equiv/equiv_struct.cc b/passes/equiv/equiv_struct.cc index 195cb3424..411f0dd5c 100644 --- a/passes/equiv/equiv_struct.cc +++ b/passes/equiv/equiv_struct.cc @@ -46,7 +46,7 @@ struct EquivStructWorker parameters == other.parameters && port_sizes == other.port_sizes; } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(type); h.eat(parameters); h.eat(port_sizes); diff --git a/passes/proc/proc_dlatch.cc b/passes/proc/proc_dlatch.cc index 2e41afd09..e038a202c 100644 --- a/passes/proc/proc_dlatch.cc +++ b/passes/proc/proc_dlatch.cc @@ -127,7 +127,7 @@ struct proc_dlatch_db_t return signal == other.signal && match == other.match && children == other.children; } - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(signal); h.eat(match); h.eat(children); diff --git a/passes/sat/recover_names.cc b/passes/sat/recover_names.cc index c18beafa1..cddd8771c 100644 --- a/passes/sat/recover_names.cc +++ b/passes/sat/recover_names.cc @@ -46,7 +46,7 @@ struct IdBit { bool operator==(const IdBit &other) const { return name == other.name && bit == other.bit; }; bool operator!=(const IdBit &other) const { return name != other.name || bit != other.bit; }; - Hasher hash_into(Hasher h) const + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(name); h.eat(bit); @@ -64,7 +64,7 @@ struct InvBit { bool operator==(const InvBit &other) const { return bit == other.bit && inverted == other.inverted; }; bool operator!=(const InvBit &other) const { return bit != other.bit || inverted != other.inverted; }; - Hasher hash_into(Hasher h) const + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(bit); h.eat(inverted); diff --git a/passes/techmap/clockgate.cc b/passes/techmap/clockgate.cc index bdfb94170..52851d922 100644 --- a/passes/techmap/clockgate.cc +++ b/passes/techmap/clockgate.cc @@ -233,7 +233,7 @@ struct ClockgatePass : public Pass { SigBit ce_bit; bool pol_clk; bool pol_ce; - Hasher hash_into(Hasher h) const { + [[nodiscard]] Hasher hash_into(Hasher h) const { auto t = std::make_tuple(clk_bit, ce_bit, pol_clk, pol_ce); h.eat(t); return h; diff --git a/passes/techmap/flowmap.cc b/passes/techmap/flowmap.cc index 00d5369e4..61966195c 100644 --- a/passes/techmap/flowmap.cc +++ b/passes/techmap/flowmap.cc @@ -250,7 +250,7 @@ struct FlowGraph { return !(*this == other); } - Hasher hash_into(Hasher h) const + [[nodiscard]] Hasher hash_into(Hasher h) const { std::pair p = {node, is_bottom}; h.eat(p); diff --git a/techlibs/quicklogic/ql_dsp_simd.cc b/techlibs/quicklogic/ql_dsp_simd.cc index bda7fb3bd..fdd2de406 100644 --- a/techlibs/quicklogic/ql_dsp_simd.cc +++ b/techlibs/quicklogic/ql_dsp_simd.cc @@ -53,7 +53,7 @@ struct QlDspSimdPass : public Pass { DspConfig(const DspConfig &ref) = default; DspConfig(DspConfig &&ref) = default; - Hasher hash_into(Hasher h) const { h.eat(connections); return h; } + [[nodiscard]] Hasher hash_into(Hasher h) const { h.eat(connections); return h; } bool operator==(const DspConfig &ref) const { return connections == ref.connections; } };