kernel/mem: Fix Cygwin compat

Avoid error:
```
kernel/mem.cc:1683:7: error: conflicting declaration ‘using addr_t = using addr_t = uint32_t’
 1683 | using addr_t = MemContents::addr_t;
      |       ^~~~~~
In file included from /usr/include/sys/types.h:222,
                 from /usr/include/pthread.h:11,
                 from /usr/lib/gcc/x86_64-pc-cygwin/12/include/c++/x86_64-pc-cygwin/bits/gthr-default.h:35,
                 from /usr/lib/gcc/x86_64-pc-cygwin/12/include/c++/x86_64-pc-cygwin/bits/gthr.h:148,
                 from /usr/lib/gcc/x86_64-pc-cygwin/12/include/c++/ext/atomicity.h:35,
                 from /usr/lib/gcc/x86_64-pc-cygwin/12/include/c++/bits/cow_string.h:37,
                 from /usr/lib/gcc/x86_64-pc-cygwin/12/include/c++/bits/basic_string.h:51,
                 from /usr/lib/gcc/x86_64-pc-cygwin/12/include/c++/string:53,
                 from ./kernel/yosys_common.h:27,
                 from ./kernel/yosys.h:42,
                 from ./kernel/mem.h:23,
                 from kernel/mem.cc:20:
/usr/include/machine/types.h:63:15: note: previous declaration as ‘typedef char* addr_t’
   63 | typedef char *addr_t;
```

According to IntelliSense, only the return types need to be prefixed with `MemContents::`, the rest are automagically using the class definition and highlight as `using Yosys::MemContents::addr_t = uint32_t`.
This commit is contained in:
Krystine Sherwin 2024-12-03 13:15:33 +13:00
parent 16a595004c
commit 7d8140ddea
No known key found for this signature in database
1 changed files with 3 additions and 5 deletions

View File

@ -1680,8 +1680,6 @@ SigSpec MemWr::decompress_en(const std::vector<int> &swizzle, SigSpec sig) {
return res; return res;
} }
using addr_t = MemContents::addr_t;
MemContents::MemContents(Mem *mem) : MemContents::MemContents(Mem *mem) :
MemContents(ceil_log2(mem->size), mem->width) MemContents(ceil_log2(mem->size), mem->width)
{ {
@ -1758,7 +1756,7 @@ bool MemContents::_range_overlaps(std::map<addr_t, RTLIL::Const>::iterator it, a
return !(top1 < begin_addr || top2 < _range_begin(it)); return !(top1 < begin_addr || top2 < _range_begin(it));
} }
std::map<addr_t, RTLIL::Const>::iterator MemContents::_range_at(addr_t addr) const { std::map<MemContents::addr_t, RTLIL::Const>::iterator MemContents::_range_at(addr_t addr) const {
// allow addr == 1<<_addr_width (which will just return end()) // allow addr == 1<<_addr_width (which will just return end())
log_assert(addr <= (addr_t)(1<<_addr_width)); log_assert(addr <= (addr_t)(1<<_addr_width));
// get the first range with base > addr // get the first range with base > addr
@ -1786,7 +1784,7 @@ RTLIL::Const MemContents::operator[](addr_t addr) const {
return _default_value; return _default_value;
} }
addr_t MemContents::count_range(addr_t begin_addr, addr_t end_addr) const { MemContents::addr_t MemContents::count_range(addr_t begin_addr, addr_t end_addr) const {
addr_t count = 0; addr_t count = 0;
for(auto it = _range_at(begin_addr); _range_overlaps(it, begin_addr, end_addr); it++) { for(auto it = _range_at(begin_addr); _range_overlaps(it, begin_addr, end_addr); it++) {
auto first = std::max(_range_begin(it), begin_addr); auto first = std::max(_range_begin(it), begin_addr);
@ -1829,7 +1827,7 @@ void MemContents::clear_range(addr_t begin_addr, addr_t end_addr) {
_values.erase(begin_it, end_it); _values.erase(begin_it, end_it);
} }
std::map<addr_t, RTLIL::Const>::iterator MemContents::_reserve_range(addr_t begin_addr, addr_t end_addr) { std::map<MemContents::addr_t, RTLIL::Const>::iterator MemContents::_reserve_range(addr_t begin_addr, addr_t end_addr) {
if(begin_addr >= end_addr) if(begin_addr >= end_addr)
return _values.end(); // need a dummy value to return, end() is cheap return _values.end(); // need a dummy value to return, end() is cheap
// find the first range containing any addr >= begin_addr - 1 // find the first range containing any addr >= begin_addr - 1