mirror of
https://github.com/holub/mame
synced 2025-04-20 23:42:22 +03:00
Fix clang-8 warnings. (nw)
This commit is contained in:
parent
a14dc4158f
commit
f12f735f54
@ -204,7 +204,7 @@ maketree: $(sort $(OBJDIRS))
|
||||
.PHONY: clang clang-5 mingw doc
|
||||
|
||||
clang:
|
||||
$(MAKE) CC=clang++ LD=clang++ CEXTRAFLAGS="-march=native -Weverything -Werror -override -Wno-unreachable-code -Wno-padded -Wno-weak-vtables -Wno-missing-variable-declarations -Wconversion -Wno-c++98-compat -Wno-float-equal -Wno-global-constructors -Wno-c++98-compat-pedantic -Wno-format-nonliteral -Wno-weak-template-vtables -Wno-exit-time-destructors"
|
||||
$(MAKE) CC=clang++ LD=clang++ CEXTRAFLAGS="-march=native -Weverything -Werror -override -Wno-unreachable-code -Wno-padded -Wno-weak-vtables -Wno-missing-variable-declarations -Wconversion -Wno-c++98-compat -Wno-float-equal -Wno-global-constructors -Wno-c++98-compat-pedantic -Wno-format-nonliteral -Wweak-template-vtables -Wno-exit-time-destructors"
|
||||
|
||||
clang-5:
|
||||
$(MAKE) CC=clang++-5.0 LD=clang++-5.0 CEXTRAFLAGS="-march=native -Weverything -Werror -Wno-inconsistent-missing-destructor-override -Wno-unreachable-code -Wno-padded -Wno-weak-vtables -Wno-missing-variable-declarations -Wconversion -Wno-c++98-compat -Wno-float-equal -Wno-global-constructors -Wno-c++98-compat-pedantic -Wno-format-nonliteral -Wno-weak-template-vtables -Wno-exit-time-destructors"
|
||||
|
@ -95,19 +95,19 @@ namespace netlist
|
||||
|
||||
NETLIB_HANDLER(7483, upd_a)
|
||||
{
|
||||
m_a = (m_A1() << 0) | (m_A2() << 1) | (m_A3() << 2) | (m_A4() << 3);
|
||||
m_a = static_cast<uint8_t>((m_A1() << 0) | (m_A2() << 1) | (m_A3() << 2) | (m_A4() << 3));
|
||||
NETLIB_NAME(7483)::update();
|
||||
}
|
||||
|
||||
NETLIB_HANDLER(7483, upd_b)
|
||||
{
|
||||
m_b = (m_B1() << 0) | (m_B2() << 1) | (m_B3() << 2) | (m_B4() << 3);
|
||||
m_b = static_cast<uint8_t>((m_B1() << 0) | (m_B2() << 1) | (m_B3() << 2) | (m_B4() << 3));
|
||||
NETLIB_NAME(7483)::update();
|
||||
}
|
||||
|
||||
inline NETLIB_UPDATE(7483)
|
||||
{
|
||||
uint8_t r = m_a + m_b + m_C0();
|
||||
uint8_t r = static_cast<uint8_t>(m_a + m_b + m_C0());
|
||||
|
||||
if (r != m_lastr)
|
||||
{
|
||||
|
@ -83,7 +83,8 @@ namespace netlist
|
||||
NLTIME_FROM_NS(18),
|
||||
NLTIME_FROM_NS(36) - NLTIME_FROM_NS(18),
|
||||
NLTIME_FROM_NS(54) - NLTIME_FROM_NS(18),
|
||||
NLTIME_FROM_NS(72) - NLTIME_FROM_NS(18)};
|
||||
NLTIME_FROM_NS(72) - NLTIME_FROM_NS(18)
|
||||
};
|
||||
|
||||
NETLIB_UPDATE(7490)
|
||||
{
|
||||
|
@ -74,9 +74,9 @@ namespace netlist
|
||||
m_Y.push(y, out_delay_CLK_Y[y]);
|
||||
}
|
||||
|
||||
int rate()
|
||||
uint8_t rate()
|
||||
{
|
||||
int a = 0;
|
||||
uint8_t a = 0;
|
||||
|
||||
for (std::size_t i = 0; i < 6; i++)
|
||||
a |= (m_B[i]() << i);
|
||||
|
@ -49,14 +49,14 @@ namespace netlist
|
||||
{
|
||||
// FIXME: Outputs are tristate. This needs to be properly implemented
|
||||
m_DOUTQ.push(1, NLTIME_FROM_NS(20));
|
||||
for (int i=0; i<8; i++)
|
||||
for (std::size_t i=0; i<8; i++)
|
||||
m_A[i].inactivate();
|
||||
m_WEQ.inactivate();
|
||||
m_DIN.inactivate();
|
||||
}
|
||||
else if (last && !m_enq)
|
||||
{
|
||||
for (int i=0; i<8; i++)
|
||||
for (std::size_t i=0; i<8; i++)
|
||||
m_A[i].activate();
|
||||
m_WEQ.activate();
|
||||
m_DIN.activate();
|
||||
|
@ -40,7 +40,7 @@ namespace netlist
|
||||
NETLIB_HANDLERI(clk);
|
||||
NETLIB_HANDLERI(abcd)
|
||||
{
|
||||
m_abcd = (m_D() << 3) | (m_C() << 2) | (m_B() << 1) | (m_A() << 0);
|
||||
m_abcd = static_cast<uint8_t>((m_D() << 3) | (m_C() << 2) | (m_B() << 1) | (m_A() << 0));
|
||||
}
|
||||
|
||||
logic_input_t m_CLK;
|
||||
|
@ -448,7 +448,7 @@ void truthtable_parser::parse(const std::vector<pstring> &truthtable)
|
||||
{
|
||||
if (m_out_state[i] == m_out_state.mask())
|
||||
throw nl_exception(plib::pfmt("truthtable: found element not set {1}\n").x(i) );
|
||||
m_out_state.set(i, m_out_state[i] | (ign[i] << m_NO));;
|
||||
m_out_state.set(i, m_out_state[i] | (ign[i] << m_NO));
|
||||
}
|
||||
*m_initialized = true;
|
||||
|
||||
|
@ -83,13 +83,13 @@ NETLIST_START(base)
|
||||
LOCAL_SOURCE(OPAMP_lib)
|
||||
LOCAL_SOURCE(otheric_lib)
|
||||
|
||||
INCLUDE(diode_models);
|
||||
INCLUDE(bjt_models);
|
||||
INCLUDE(family_models);
|
||||
INCLUDE(TTL74XX_lib);
|
||||
INCLUDE(CD4XXX_lib);
|
||||
INCLUDE(OPAMP_lib);
|
||||
INCLUDE(otheric_lib);
|
||||
INCLUDE(diode_models)
|
||||
INCLUDE(bjt_models)
|
||||
INCLUDE(family_models)
|
||||
INCLUDE(TTL74XX_lib)
|
||||
INCLUDE(CD4XXX_lib)
|
||||
INCLUDE(OPAMP_lib)
|
||||
INCLUDE(otheric_lib)
|
||||
|
||||
NETLIST_END()
|
||||
|
||||
|
@ -293,8 +293,6 @@ void netlist_t::remove_dev(core_device_t *dev)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void netlist_t::start()
|
||||
{
|
||||
setup().start_devices();
|
||||
@ -344,7 +342,7 @@ void netlist_t::start()
|
||||
if (p != setup().m_param_values.end())
|
||||
{
|
||||
//FIXME: check for errors ...
|
||||
double v = plib::pstonum<double>(p->second);;
|
||||
double v = plib::pstonum<double>(p->second);
|
||||
if (std::abs(v - std::floor(v)) > 1e-6 )
|
||||
log().fatal(MF_1_HND_VAL_NOT_SUPPORTED, p->second);
|
||||
d->set_hint_deactivate(v == 0.0);
|
||||
|
@ -153,7 +153,7 @@ class NETLIB_NAME(name) : public device_t
|
||||
#define NETLIB_UPDATE(chip) NETLIB_HANDLER(chip, update)
|
||||
|
||||
// FIXME: NETLIB_PARENT_UPDATE should disappear
|
||||
#define NETLIB_PARENT_UPDATE(chip) NETLIB_NAME(chip) :: update();
|
||||
#define NETLIB_PARENT_UPDATE(chip) NETLIB_NAME(chip) :: update()
|
||||
|
||||
#define NETLIB_RESET(chip) void NETLIB_NAME(chip) :: reset(void)
|
||||
|
||||
|
@ -36,6 +36,7 @@
|
||||
{ \
|
||||
return std::unique_ptr<factory::element_t>(plib::palloc<factory::device_element_t<ns :: NETLIB_NAME(chip)>>(name, classname, def_param, pstring(__FILE__))); \
|
||||
} \
|
||||
\
|
||||
factory::constructor_ptr_t decl_ ## chip = NETLIB_NAME(chip ## _c);
|
||||
|
||||
namespace netlist {
|
||||
|
@ -30,7 +30,7 @@ bool parser_t::parse(const pstring &nlname)
|
||||
set_identifier_chars("abcdefghijklmnopqrstuvwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_.-");
|
||||
set_number_chars(".0123456789", "0123456789eE-."); //FIXME: processing of numbers
|
||||
//set_whitespace(pstring("").cat(' ').cat(9).cat(10).cat(13));
|
||||
set_whitespace(pstring("") + ' ' + (char)9 + (char)10 + (char)13);
|
||||
set_whitespace(pstring("") + ' ' + static_cast<char>(9) + static_cast<char>(10) + static_cast<char>(13));
|
||||
set_comment("/*", "*/", "//");
|
||||
m_tok_param_left = register_token("(");
|
||||
m_tok_param_right = register_token(")");
|
||||
|
@ -52,7 +52,7 @@ std::unique_ptr<T> make_unique(Args&&... args)
|
||||
}
|
||||
|
||||
template<typename BC, typename DC, typename... Args>
|
||||
static std::unique_ptr<BC> make_unique_base(Args&&... args)
|
||||
std::unique_ptr<BC> make_unique_base(Args&&... args)
|
||||
{
|
||||
std::unique_ptr<BC> ret(new DC(std::forward<Args>(args)...));
|
||||
return ret;
|
||||
|
@ -23,7 +23,7 @@ public:
|
||||
explicit pexception(const pstring &text);
|
||||
pexception(const pexception &e) : std::exception(e), m_text(e.m_text) { }
|
||||
|
||||
virtual ~pexception() noexcept;
|
||||
virtual ~pexception() noexcept override;
|
||||
|
||||
const pstring &text() { return m_text; }
|
||||
const char* what() const noexcept override { return m_text.c_str(); }
|
||||
|
@ -69,7 +69,7 @@ pfmt &pfmt::format_element(const char *l, const unsigned cfmt_spec, ...)
|
||||
if (pstring("duxo").find(cfmt_spec) != pstring::npos)
|
||||
{
|
||||
if (pstring("duxo").find(pend) == pstring::npos)
|
||||
fmt += (pstring(l) + (char) cfmt_spec);
|
||||
fmt += (pstring(l) + static_cast<pstring::value_type>(cfmt_spec));
|
||||
else
|
||||
fmt = plib::left(fmt, fmt.size() - 1) + pstring(l) + plib::right(fmt, 1);
|
||||
}
|
||||
|
@ -199,8 +199,8 @@ double pfunction::evaluate(const std::vector<double> &values)
|
||||
OP(SUB, 1, ST2 - ST1)
|
||||
OP(DIV, 1, ST2 / ST1)
|
||||
OP(POW, 1, std::pow(ST2, ST1))
|
||||
OP(SIN, 0, std::sin(ST2));
|
||||
OP(COS, 0, std::cos(ST2));
|
||||
OP(SIN, 0, std::sin(ST2))
|
||||
OP(COS, 0, std::cos(ST2))
|
||||
case RAND:
|
||||
stack[ptr++] = lfsr_random();
|
||||
break;
|
||||
|
@ -18,8 +18,8 @@
|
||||
namespace plib {
|
||||
namespace omp {
|
||||
|
||||
template <class T>
|
||||
void for_static(const int start, const int end, const T &what)
|
||||
template <typename I, class T>
|
||||
void for_static(const I start, const I end, const T &what)
|
||||
{
|
||||
#if HAS_OPENMP && USE_OPENMP
|
||||
#pragma omp parallel
|
||||
@ -28,19 +28,19 @@ void for_static(const int start, const int end, const T &what)
|
||||
#if HAS_OPENMP && USE_OPENMP
|
||||
#pragma omp for schedule(static)
|
||||
#endif
|
||||
for (int i = start; i < end; i++)
|
||||
for (I i = start; i < end; i++)
|
||||
what(i);
|
||||
}
|
||||
}
|
||||
|
||||
inline void set_num_threads(const int threads)
|
||||
inline void set_num_threads(const std::size_t threads)
|
||||
{
|
||||
#if HAS_OPENMP && USE_OPENMP
|
||||
omp_set_num_threads(threads);
|
||||
#endif
|
||||
}
|
||||
|
||||
inline int get_max_threads()
|
||||
inline std::size_t get_max_threads()
|
||||
{
|
||||
#if HAS_OPENMP && USE_OPENMP
|
||||
return omp_get_max_threads();
|
||||
|
@ -561,7 +561,9 @@ namespace plib
|
||||
decltype(arg.c_str()) cstr = arg.c_str();
|
||||
std::size_t idx(0);
|
||||
auto ret = pstonum_helper<T>()(cstr, &idx);
|
||||
if (ret >= std::numeric_limits<T>::lowest() && ret <= std::numeric_limits<T>::max())
|
||||
typedef decltype(ret) ret_type;
|
||||
if (ret >= static_cast<ret_type>(std::numeric_limits<T>::lowest())
|
||||
&& ret <= static_cast<ret_type>(std::numeric_limits<T>::max()))
|
||||
//&& (ret == T(0) || std::abs(ret) >= std::numeric_limits<T>::min() ))
|
||||
{
|
||||
if (cstr[idx] != 0)
|
||||
|
@ -74,6 +74,9 @@ namespace plib
|
||||
|
||||
std::vector<pstring> psplit(const pstring &str, const pstring &onstr, bool ignore_empty = false);
|
||||
std::vector<pstring> psplit(const pstring &str, const std::vector<pstring> &onstrl);
|
||||
std::vector<std::string> psplit_r(const std::string &stri,
|
||||
const std::string &token,
|
||||
const std::size_t maxsplit);
|
||||
|
||||
}
|
||||
|
||||
|
@ -232,7 +232,7 @@ void matrix_solver_t::build_LE_A()
|
||||
for (std::size_t k = 0; k < iN; k++)
|
||||
{
|
||||
terms_for_net_t *terms = m_terms[k].get();
|
||||
nl_double * Ak = &child.A(k, 0);
|
||||
nl_double * Ak = &child.A(k, 0ul);
|
||||
|
||||
for (std::size_t i=0; i < iN; i++)
|
||||
Ak[i] = 0.0;
|
||||
|
@ -9,6 +9,7 @@
|
||||
#define NLD_MS_DIRECT_H_
|
||||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
|
||||
#include "nld_solver.h"
|
||||
#include "nld_matrix_solver.h"
|
||||
@ -55,15 +56,11 @@ protected:
|
||||
void LE_back_subst(T * RESTRICT x);
|
||||
|
||||
#if (NL_USE_DYNAMIC_ALLOCATION)
|
||||
template <typename T1, typename T2>
|
||||
nl_ext_double &A(const T1 &r, const T2 &c) { return m_A[r * m_pitch + c]; }
|
||||
template <typename T1>
|
||||
nl_ext_double &RHS(const T1 &r) { return m_A[r * m_pitch + N()]; }
|
||||
nl_ext_double &A(const std::size_t r, const std::size_t c) { return m_A[r * m_pitch + c]; }
|
||||
nl_ext_double &RHS(const std::size_t r) { return m_A[r * m_pitch + N()]; }
|
||||
#else
|
||||
template <typename T1, typename T2>
|
||||
nl_ext_double &A(const T1 &r, const T2 &c) { return m_A[r][c]; }
|
||||
template <typename T1>
|
||||
nl_ext_double &RHS(const T1 &r) { return m_A[r][N()]; }
|
||||
nl_ext_double &A(const std::size_t r, const std::size_t c) { return m_A[r][c]; }
|
||||
nl_ext_double &RHS(const std::size_t r) { return m_A[r][N()]; }
|
||||
#endif
|
||||
nl_double m_last_RHS[storage_N]; // right hand side - contains currents
|
||||
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
// matrix_solver - Direct1
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
inline unsigned matrix_solver_direct1_t::vsolve_non_dynamic(ATTR_UNUSED const bool newton_raphson)
|
||||
inline unsigned matrix_solver_direct1_t::vsolve_non_dynamic(const bool newton_raphson)
|
||||
{
|
||||
build_LE_A<matrix_solver_direct1_t>();
|
||||
build_LE_RHS<matrix_solver_direct1_t>();
|
||||
|
@ -30,7 +30,7 @@ public:
|
||||
// matrix_solver - Direct2
|
||||
// ----------------------------------------------------------------------------------------
|
||||
|
||||
inline unsigned matrix_solver_direct2_t::vsolve_non_dynamic(ATTR_UNUSED const bool newton_raphson)
|
||||
inline unsigned matrix_solver_direct2_t::vsolve_non_dynamic(const bool newton_raphson)
|
||||
{
|
||||
build_LE_A<matrix_solver_direct2_t>();
|
||||
build_LE_RHS<matrix_solver_direct2_t>();
|
||||
|
@ -13,6 +13,7 @@
|
||||
#define NLD_MS_GMRES_H_
|
||||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
|
||||
#include "mat_cr.h"
|
||||
#include "nld_ms_direct.h"
|
||||
@ -167,21 +168,19 @@ unsigned matrix_solver_GMRES_t<m_N, storage_N>::vsolve_non_dynamic(const bool ne
|
||||
new_V[k] = this->m_nets[k]->Q_Analog();
|
||||
|
||||
}
|
||||
mat.ia[iN] = static_cast<mattype>(mat.nz_num);
|
||||
|
||||
mat.ia[iN] = static_cast<mattype>(mat.nz_num);
|
||||
const nl_double accuracy = this->m_params.m_accuracy;
|
||||
|
||||
unsigned mr = iN;
|
||||
if (iN > 3 )
|
||||
mr = static_cast<unsigned>(std::sqrt(iN) * 2.0);
|
||||
const std::size_t mr = (iN > 3 ) ? static_cast<std::size_t>(std::sqrt(iN) * 2.0) : iN;
|
||||
unsigned iter = std::max(1u, this->m_params.m_gs_loops);
|
||||
unsigned gsl = solve_ilu_gmres(new_V, RHS, iter, mr, accuracy);
|
||||
unsigned failed = mr * iter;
|
||||
const std::size_t failed = mr * iter;
|
||||
|
||||
this->m_iterative_total += gsl;
|
||||
this->m_stat_calculations++;
|
||||
|
||||
if (gsl>=failed)
|
||||
if (gsl >= failed)
|
||||
{
|
||||
this->m_iterative_fail++;
|
||||
return matrix_solver_direct_t<m_N, storage_N>::vsolve_non_dynamic(newton_raphson);
|
||||
|
@ -93,17 +93,18 @@ NETLIB_UPDATE(solver)
|
||||
/* FIXME: Needs a more elegant solution */
|
||||
bool force_solve = (netlist().time() < netlist_time::from_double(2 * m_params.m_max_timestep));
|
||||
|
||||
std::size_t nthreads = std::min(m_parallel(), plib::omp::get_max_threads());
|
||||
std::size_t nthreads = std::min(static_cast<std::size_t>(m_parallel()), plib::omp::get_max_threads());
|
||||
std::size_t t_cnt = 0;
|
||||
int solv[128];
|
||||
for (int i = 0; i < m_mat_solvers.size(); i++)
|
||||
std::size_t solv[128];
|
||||
for (std::size_t i = 0; i < m_mat_solvers.size(); i++)
|
||||
if (m_mat_solvers[i]->has_timestep_devices() || force_solve)
|
||||
solv[t_cnt++] = i;
|
||||
|
||||
if (nthreads > 1 && t_cnt > 1)
|
||||
{
|
||||
plib::omp::set_num_threads(nthreads);
|
||||
plib::omp::for_static(0, t_cnt, [this, &solv](int i) { ATTR_UNUSED const netlist_time ts = this->m_mat_solvers[solv[i]]->solve(); });
|
||||
plib::omp::for_static(static_cast<std::size_t>(0), t_cnt, [this, &solv](std::size_t i)
|
||||
{ ATTR_UNUSED const netlist_time ts = this->m_mat_solvers[solv[i]]->solve(); });
|
||||
}
|
||||
else
|
||||
for (auto & solver : m_mat_solvers)
|
||||
|
@ -11,6 +11,7 @@
|
||||
#define VECTOR_BASE_H_
|
||||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include "../plib/pconfig.h"
|
||||
|
||||
#if 0
|
||||
|
@ -408,7 +408,7 @@ nl_convert_eagle_t::tokenizer::tokenizer(nl_convert_eagle_t &convert, plib::putf
|
||||
set_identifier_chars("abcdefghijklmnopqrstuvwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_.-");
|
||||
set_number_chars(".0123456789", "0123456789eE-."); //FIXME: processing of numbers
|
||||
//set_whitespace(pstring("").cat(' ').cat(9).cat(10).cat(13));
|
||||
set_whitespace(pstring("") + ' ' + (char)9 + (char)10 + (char)13);
|
||||
set_whitespace(pstring("") + ' ' + static_cast<char>(9) + static_cast<char>(10) + static_cast<char>(13));
|
||||
/* FIXME: gnetlist doesn't print comments */
|
||||
set_comment("/*", "*/", "//");
|
||||
set_string_char('\'');
|
||||
@ -546,7 +546,7 @@ nl_convert_rinf_t::tokenizer::tokenizer(nl_convert_rinf_t &convert, plib::putf8_
|
||||
set_identifier_chars(".abcdefghijklmnopqrstuvwvxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890_-");
|
||||
set_number_chars("0123456789", "0123456789eE-."); //FIXME: processing of numbers
|
||||
//set_whitespace(pstring("").cat(' ').cat(9).cat(10).cat(13));
|
||||
set_whitespace(pstring("") + ' ' + (char)9 + (char)10 + (char)13);
|
||||
set_whitespace(pstring("") + ' ' + static_cast<char>(9) + static_cast<char>(10) + static_cast<char>(13));
|
||||
/* FIXME: gnetlist doesn't print comments */
|
||||
set_comment("","","//"); // FIXME:needs to be confirmed
|
||||
set_string_char('"');
|
||||
|
Loading…
Reference in New Issue
Block a user