Use (and ignore) the expression provided to log_assert in NDEBUG builds.
authorwhitequark <whitequark@whitequark.org>
Wed, 17 Jun 2020 19:30:53 +0000 (19:30 +0000)
committerwhitequark <whitequark@whitequark.org>
Fri, 19 Jun 2020 15:48:58 +0000 (15:48 +0000)
This avoids warnings in NDEBUG builds emitted when a variable is only
used in log_assert, but is always defined.

backends/ilang/ilang_backend.cc
kernel/log.h
kernel/macc.h

index cf0d3fecaf377cc95ca9f51d3fbae02b6ddf3f24..aa5a175ca299692b2190c0453df386091b56767e 100644 (file)
@@ -362,9 +362,7 @@ void ILANG_BACKEND::dump_module(std::ostream &f, std::string indent, RTLIL::Modu
 
 void ILANG_BACKEND::dump_design(std::ostream &f, RTLIL::Design *design, bool only_selected, bool flag_m, bool flag_n)
 {
-#ifndef NDEBUG
        int init_autoidx = autoidx;
-#endif
 
        if (!flag_m) {
                int count_selected_mods = 0;
index 501d20c09b8a868625e1f02ae924eb1b1d4852b2..ef4b6b45672607dd83daba7ec69eeb685f5b9c68 100644 (file)
@@ -236,7 +236,7 @@ static inline void log_assert_worker(bool cond, const char *expr, const char *fi
 }
 #  define log_assert(_assert_expr_) YOSYS_NAMESPACE_PREFIX log_assert_worker(_assert_expr_, #_assert_expr_, __FILE__, __LINE__)
 #else
-#  define log_assert(_assert_expr_)
+#  define log_assert(_assert_expr_) do { if (0) { (void)(_assert_expr_); } } while(0)
 #endif
 
 #define log_abort() YOSYS_NAMESPACE_PREFIX log_error("Abort in %s:%d.\n", __FILE__, __LINE__)
index e9f6f05e914fdc36f41a7835fc1446d55ed4a2a2..d216e6772e12c0e9006d14c10752d01aa10d2831 100644 (file)
@@ -107,10 +107,8 @@ struct Macc
                std::vector<RTLIL::State> config_bits = cell->getParam(ID::CONFIG).bits;
                int config_cursor = 0;
 
-#ifndef NDEBUG
                int config_width = cell->getParam(ID::CONFIG_WIDTH).as_int();
                log_assert(GetSize(config_bits) >= config_width);
-#endif
 
                int num_bits = 0;
                if (config_bits[config_cursor++] == State::S1) num_bits |= 1;