From d878fcbdc76f4b612ba8578213f73f27585fc792 Mon Sep 17 00:00:00 2001 From: Clifford Wolf Date: Sun, 27 Jul 2014 12:04:12 +0200 Subject: [PATCH] Added log_cmd_error_expection --- kernel/driver.cc | 6 +++--- kernel/log.cc | 2 +- kernel/log.h | 2 ++ passes/fsm/fsm_export.cc | 5 +---- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/kernel/driver.cc b/kernel/driver.cc index 7a1c7ed16..380315e7c 100644 --- a/kernel/driver.cc +++ b/kernel/driver.cc @@ -141,9 +141,9 @@ static void run_frontend(std::string filename, std::string command, RTLIL::Desig Pass::call(design, command); } } - catch (...) { + catch (log_cmd_error_expection) { Frontend::current_script_file = backup_script_file; - std::rethrow_exception(std::current_exception()); + throw log_cmd_error_expection(); } Frontend::current_script_file = backup_script_file; @@ -329,7 +329,7 @@ static void shell(RTLIL::Design *design) try { assert(design->selection_stack.size() == 1); Pass::call(design, command); - } catch (int) { + } catch (log_cmd_error_expection) { while (design->selection_stack.size() > 1) design->selection_stack.pop_back(); log_reset_stack(); diff --git a/kernel/log.cc b/kernel/log.cc index 63a0a84dd..b8a47e1cf 100644 --- a/kernel/log.cc +++ b/kernel/log.cc @@ -160,7 +160,7 @@ void log_cmd_error(const char *format, ...) log("ERROR: "); logv(format, ap); log_flush(); - throw 0; + throw log_cmd_error_expection(); } logv_error(format, ap); diff --git a/kernel/log.h b/kernel/log.h index 1658800dd..abfb810f7 100644 --- a/kernel/log.h +++ b/kernel/log.h @@ -34,6 +34,8 @@ #define S__LINE__sub1(x) S__LINE__sub2(x) #define S__LINE__ S__LINE__sub1(__LINE__) +struct log_cmd_error_expection { }; + extern std::vector log_files; extern FILE *log_errfile; extern bool log_time; diff --git a/passes/fsm/fsm_export.cc b/passes/fsm/fsm_export.cc index f84f372ac..f6f9faa9b 100644 --- a/passes/fsm/fsm_export.cc +++ b/passes/fsm/fsm_export.cc @@ -32,10 +32,7 @@ * Convert a signal into a KISS-compatible textual representation. */ std::string kiss_convert_signal(const RTLIL::SigSpec &sig) { - if (!sig.is_fully_const()) { - throw 0; - } - + log_assert(sig.is_fully_const()); return sig.as_const().as_string(); } -- 2.30.2