summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabe Black <gabeblack@google.com>2018-10-06 20:21:31 -0700
committerGabe Black <gabeblack@google.com>2018-10-16 01:07:23 +0000
commit0b49ab94b267af7231141b0c992099a3be723ab7 (patch)
treeb3a5e702f1c1a791d1c404b28214f2f14abe20c9
parent5220003e388b75d45a57f3db83dd00212e3a4118 (diff)
downloadgem5-0b49ab94b267af7231141b0c992099a3be723ab7.tar.xz
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 <gabeblack@google.com> Maintainer: Gabe Black <gabeblack@google.com>
-rw-r--r--src/systemc/utils/sc_report.cc21
1 files 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