mirror of https://github.com/YosysHQ/yosys.git
Merge pull request #2141 from whitequark/cxxrtl-cxx11
cxxrtl: various compiler compatibility fixes
This commit is contained in:
commit
8a4841d786
|
@ -608,6 +608,7 @@ struct memory {
|
||||||
// This utterly reprehensible construct is the most reasonable way to apply a function to every element
|
// This utterly reprehensible construct is the most reasonable way to apply a function to every element
|
||||||
// of a parameter pack, if the elements all have different types and so cannot be cast to an initializer list.
|
// of a parameter pack, if the elements all have different types and so cannot be cast to an initializer list.
|
||||||
auto _ = {std::move(std::begin(init.data), std::end(init.data), data.begin() + init.offset)...};
|
auto _ = {std::move(std::begin(init.data), std::end(init.data), data.begin() + init.offset)...};
|
||||||
|
(void)_;
|
||||||
}
|
}
|
||||||
|
|
||||||
// An operator for direct memory reads. May be used at any time during the simulation.
|
// An operator for direct memory reads. May be used at any time during the simulation.
|
||||||
|
@ -676,10 +677,8 @@ struct metadata {
|
||||||
|
|
||||||
// In debug mode, using the wrong .as_*() function will assert.
|
// In debug mode, using the wrong .as_*() function will assert.
|
||||||
// In release mode, using the wrong .as_*() function will safely return a default value.
|
// In release mode, using the wrong .as_*() function will safely return a default value.
|
||||||
union {
|
const unsigned uint_value = 0;
|
||||||
const unsigned uint_value = 0;
|
const signed sint_value = 0;
|
||||||
const signed sint_value;
|
|
||||||
};
|
|
||||||
const std::string string_value = "";
|
const std::string string_value = "";
|
||||||
const double double_value = 0.0;
|
const double double_value = 0.0;
|
||||||
|
|
||||||
|
@ -826,7 +825,9 @@ struct module {
|
||||||
return deltas;
|
return deltas;
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual void debug_info(debug_items &items, std::string path = "") {}
|
virtual void debug_info(debug_items &items, std::string path = "") {
|
||||||
|
(void)items, (void)path;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace cxxrtl
|
} // namespace cxxrtl
|
||||||
|
|
|
@ -1922,8 +1922,9 @@ struct CxxrtlWorker {
|
||||||
if (top_module != nullptr && debug_info) {
|
if (top_module != nullptr && debug_info) {
|
||||||
f << "cxxrtl_toplevel " << design_ns << "_create() {\n";
|
f << "cxxrtl_toplevel " << design_ns << "_create() {\n";
|
||||||
inc_indent();
|
inc_indent();
|
||||||
|
std::string top_type = design_ns + "::" + mangle(top_module);
|
||||||
f << indent << "return new _cxxrtl_toplevel { ";
|
f << indent << "return new _cxxrtl_toplevel { ";
|
||||||
f << "std::make_unique<" << design_ns << "::" << mangle(top_module) << ">()";
|
f << "std::unique_ptr<" << top_type << ">(new " + top_type + ")";
|
||||||
f << " };\n";
|
f << " };\n";
|
||||||
dec_indent();
|
dec_indent();
|
||||||
f << "}\n";
|
f << "}\n";
|
||||||
|
|
|
@ -75,8 +75,8 @@ void cxxrtl_vcd_add_from(cxxrtl_vcd vcd, cxxrtl_handle handle);
|
||||||
//
|
//
|
||||||
// Objects can only be scheduled before the first call to `cxxrtl_vcd_sample`.
|
// Objects can only be scheduled before the first call to `cxxrtl_vcd_sample`.
|
||||||
void cxxrtl_vcd_add_from_if(cxxrtl_vcd vcd, cxxrtl_handle handle, void *data,
|
void cxxrtl_vcd_add_from_if(cxxrtl_vcd vcd, cxxrtl_handle handle, void *data,
|
||||||
int (*filter)(void *data, const char *name,
|
int (*filter)(void *data, const char *name,
|
||||||
const struct cxxrtl_object *object));
|
const struct cxxrtl_object *object));
|
||||||
|
|
||||||
// Schedule all CXXRTL objects in a simulation except for memories.
|
// Schedule all CXXRTL objects in a simulation except for memories.
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue