diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/log.h | 25 | ||||
| -rw-r--r-- | kernel/macc.h | 2 | ||||
| -rw-r--r-- | kernel/modtools.h | 6 | ||||
| -rw-r--r-- | kernel/yosys.h | 8 | 
4 files changed, 22 insertions, 19 deletions
diff --git a/kernel/log.h b/kernel/log.h index 501d20c09..8981c4cde 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -157,11 +157,10 @@ void log_warning_noprefix(const char *format, ...) YS_ATTRIBUTE(format(printf, 1  #ifndef NDEBUG  static inline bool ys_debug(int n = 0) { if (log_force_debug) return true; log_debug_suppressed += n; return false; } -#  define log_debug(...) do { if (ys_debug(1)) log(__VA_ARGS__); } while (0)  #else  static inline bool ys_debug(int = 0) { return false; } -#  define log_debug(_fmt, ...) do { } while (0)  #endif +#  define log_debug(...) do { if (ys_debug(1)) log(__VA_ARGS__); } while (0)  static inline void log_suppressed() {  	if (log_debug_suppressed && !log_make_debug) { @@ -236,7 +235,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__) @@ -308,19 +307,17 @@ struct PerformanceTimer  	static int64_t query() {  #  ifdef _WIN32  		return 0; -#  elif defined(_POSIX_TIMERS) && (_POSIX_TIMERS > 0) -		struct timespec ts; -		clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts); -		return int64_t(ts.tv_sec)*1000000000 + ts.tv_nsec;  #  elif defined(RUSAGE_SELF)  		struct rusage rusage; -		int64_t t; -		if (getrusage(RUSAGE_SELF, &rusage) == -1) { -			log_cmd_error("getrusage failed!\n"); -			log_abort(); +		int64_t t = 0; +		for (int who : {RUSAGE_SELF, RUSAGE_CHILDREN}) { +			if (getrusage(who, &rusage) == -1) { +				log_cmd_error("getrusage failed!\n"); +				log_abort(); +			} +			t += 1000000000ULL * (int64_t) rusage.ru_utime.tv_sec + (int64_t) rusage.ru_utime.tv_usec * 1000ULL; +			t += 1000000000ULL * (int64_t) rusage.ru_stime.tv_sec + (int64_t) rusage.ru_stime.tv_usec * 1000ULL;  		} -		t = 1000000000ULL * (int64_t) rusage.ru_utime.tv_sec + (int64_t) rusage.ru_utime.tv_usec * 1000ULL; -		t += 1000000000ULL * (int64_t) rusage.ru_stime.tv_sec + (int64_t) rusage.ru_stime.tv_usec * 1000ULL;  		return t;  #  else  #    error "Don't know how to measure per-process CPU time. Need alternative method (times()/clocks()/gettimeofday()?)." @@ -371,7 +368,7 @@ static inline void log_dump_val_worker(char *v) { log("%s", v); }  static inline void log_dump_val_worker(const char *v) { log("%s", v); }  static inline void log_dump_val_worker(std::string v) { log("%s", v.c_str()); }  static inline void log_dump_val_worker(PerformanceTimer p) { log("%f seconds", p.sec()); } -static inline void log_dump_args_worker(const char *p YS_ATTRIBUTE(unused)) { log_assert(*p == 0); } +static inline void log_dump_args_worker(const char *p) { log_assert(*p == 0); }  void log_dump_val_worker(RTLIL::IdString v);  void log_dump_val_worker(RTLIL::SigSpec v);  void log_dump_val_worker(RTLIL::State v); diff --git a/kernel/macc.h b/kernel/macc.h index e9f6f05e9..d216e6772 100644 --- a/kernel/macc.h +++ b/kernel/macc.h @@ -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; diff --git a/kernel/modtools.h b/kernel/modtools.h index 9d6a50502..29c510059 100644 --- a/kernel/modtools.h +++ b/kernel/modtools.h @@ -169,7 +169,7 @@ struct ModIndex : public RTLIL::Monitor  		port_add(cell, port, sig);  	} -	void notify_connect(RTLIL::Module *mod YS_ATTRIBUTE(unused), const RTLIL::SigSig &sigsig) override +	void notify_connect(RTLIL::Module *mod, const RTLIL::SigSig &sigsig) override  	{  		log_assert(module == mod); @@ -214,13 +214,13 @@ struct ModIndex : public RTLIL::Monitor  		}  	} -	void notify_connect(RTLIL::Module *mod YS_ATTRIBUTE(unused), const std::vector<RTLIL::SigSig>&) override +	void notify_connect(RTLIL::Module *mod, const std::vector<RTLIL::SigSig>&) override  	{  		log_assert(module == mod);  		auto_reload_module = true;  	} -	void notify_blackout(RTLIL::Module *mod YS_ATTRIBUTE(unused)) override +	void notify_blackout(RTLIL::Module *mod) override  	{  		log_assert(module == mod);  		auto_reload_module = true; diff --git a/kernel/yosys.h b/kernel/yosys.h index b9b6b24b1..f1646d6bc 100644 --- a/kernel/yosys.h +++ b/kernel/yosys.h @@ -145,6 +145,14 @@ extern Tcl_Obj *Tcl_ObjSetVar2(Tcl_Interp *interp, Tcl_Obj *part1Ptr, Tcl_Obj *p  #endif  #if __cplusplus >= 201703L +#  define YS_MAYBE_UNUSED [[maybe_unused]]; +#elif defined(__GNUC__) || defined(__clang__) +#  define YS_MAYBE_UNUSED __attribute__((__unused__)) +#else +#  define YS_MAYBE_UNUSED +#endif + +#if __cplusplus >= 201703L  #  define YS_FALLTHROUGH [[fallthrough]];  #elif defined(__clang__)  #  define YS_FALLTHROUGH [[clang::fallthrough]];  | 
