From 0b49ab94b267af7231141b0c992099a3be723ab7 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Sat, 6 Oct 2018 20:21:31 -0700 Subject: systemc: Make suppress_id work like the test expects. This is in contrast to how Accellera actually implements it, implying they would fail their own test. The specific difference is that suppress_id should only suppress SC_INFO and SC_WARNING, not all severity levels like the Accellera implementation will do. Change-Id: I34f0d2d5912548963433a785cfa6ef88ad818042 Reviewed-on: https://gem5-review.googlesource.com/c/13320 Reviewed-by: Gabe Black Maintainer: Gabe Black --- src/systemc/utils/sc_report.cc | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/systemc/utils/sc_report.cc b/src/systemc/utils/sc_report.cc index 83e066269..e76dfcb6d 100644 --- a/src/systemc/utils/sc_report.cc +++ b/src/systemc/utils/sc_report.cc @@ -102,7 +102,11 @@ sc_report::is_suppressed(int id) if (it == sc_gem5::reportIdToMsgMap.end()) return false; - return sc_gem5::reportMsgInfoMap[it->second].actions == SC_DO_NOTHING; + auto &msgInfo = sc_gem5::reportMsgInfoMap[it->second]; + + return (msgInfo.actions == SC_DO_NOTHING || + (msgInfo.sevActions[SC_INFO] == SC_DO_NOTHING && + msgInfo.sevActions[SC_WARNING] == SC_DO_NOTHING)); } void @@ -139,10 +143,17 @@ sc_report::suppress_id(int id, bool suppress) if (it == sc_gem5::reportIdToMsgMap.end()) return; - if (suppress) - sc_gem5::reportMsgInfoMap[it->second].actions = SC_DO_NOTHING; - else - sc_gem5::reportMsgInfoMap[it->second].actions = SC_UNSPECIFIED; + if (suppress) { + sc_gem5::reportMsgInfoMap[it->second]. + sevActions[SC_INFO] = SC_DO_NOTHING; + sc_gem5::reportMsgInfoMap[it->second]. + sevActions[SC_WARNING] = SC_DO_NOTHING; + } else { + sc_gem5::reportMsgInfoMap[it->second]. + sevActions[SC_INFO] = SC_UNSPECIFIED; + sc_gem5::reportMsgInfoMap[it->second]. + sevActions[SC_WARNING] = SC_UNSPECIFIED; + } } void -- cgit v1.2.3