diff --git a/kernel/log.cc b/kernel/log.cc index 131291a3c..7ddf9cfe1 100644 --- a/kernel/log.cc +++ b/kernel/log.cc @@ -216,7 +216,7 @@ void log_formatted_string(std::string_view format, std::string str) logv_string(format, std::move(str)); } -static void logv_header(RTLIL::Design *design, const char *format, va_list ap) +void log_formatted_header(RTLIL::Design *design, std::string_view format, std::string str) { bool pop_errfile = false; @@ -235,7 +235,7 @@ static void logv_header(RTLIL::Design *design, const char *format, va_list ap) header_id += stringf("%s%d", header_id.empty() ? "" : ".", c); log("%s. ", header_id.c_str()); - logv(format, ap); + log_formatted_string(format, std::move(str)); log_flush(); if (log_hdump_all) @@ -414,14 +414,6 @@ void log_file_error(const string &filename, int lineno, logv_file_error(filename, lineno, format, ap); } -void log_header(RTLIL::Design *design, const char *format, ...) -{ - va_list ap; - va_start(ap, format); - logv_header(design, format, ap); - va_end(ap); -} - void log_warning(const char *format, ...) { va_list ap; diff --git a/kernel/log.h b/kernel/log.h index d1a438e77..9cdc00181 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -122,7 +122,6 @@ extern int log_debug_suppressed; [[noreturn]] void logv_file_error(const string &filename, int lineno, const char *format, va_list ap); -void log_header(RTLIL::Design *design, const char *format, ...) YS_ATTRIBUTE(format(printf, 2, 3)); void log_warning(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2)); void log_experimental(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2)); @@ -154,6 +153,13 @@ inline void log(FmtString...> fmt, Args... args) log_formatted_string(fmt.format_string(), fmt.format(args...)); } +void log_formatted_header(RTLIL::Design *design, std::string_view format, std::string str); +template +inline void log_header(RTLIL::Design *design, FmtString...> fmt, Args... args) +{ + log_formatted_header(design, fmt.format_string(), fmt.format(args...)); +} + static inline void log_suppressed() { if (log_debug_suppressed && !log_make_debug) { log("\n", log_debug_suppressed); diff --git a/passes/opt/opt.cc b/passes/opt/opt.cc index 146c21cce..ec5760cd9 100644 --- a/passes/opt/opt.cc +++ b/passes/opt/opt.cc @@ -196,7 +196,7 @@ struct OptPass : public Pass { design->sort(); design->check(); - log_header(design, fast_mode ? "Finished fast OPT passes.\n" : "Finished OPT passes. (There is nothing left to do.)\n"); + log_header(design, "Finished fast OPT passes.%s\n", fast_mode ? "" : " (There is nothing left to do.)"); log_pop(); } } OptPass;