systemc: Warn about using deprecated sc_port constructors.
authorGabe Black <gabeblack@google.com>
Thu, 11 Oct 2018 02:03:12 +0000 (19:03 -0700)
committerGabe Black <gabeblack@google.com>
Tue, 16 Oct 2018 01:17:07 +0000 (01:17 +0000)
This gets rid of one of the last instances of a warning about
unimplemented functionality.

Change-Id: I3d8e50ea45554cba969118ce873ed3d2b041ec43
Reviewed-on: https://gem5-review.googlesource.com/c/13395
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

src/systemc/core/sc_port.cc
src/systemc/ext/core/sc_port.hh

index 69fe6f579410655859e9d416709f224daa469d41..37a534a8398678da4da6d7f85cc37c06a26bfdfe 100644 (file)
@@ -29,7 +29,7 @@
 
 #include <sstream>
 
-#include "base/logging.hh"
+#include "base/cprintf.hh"
 #include "systemc/core/module.hh"
 #include "systemc/core/port.hh"
 #include "systemc/core/scheduler.hh"
@@ -84,9 +84,15 @@ sc_port_base::~sc_port_base()
 }
 
 void
-sc_port_base::warn_unimpl(const char *func) const
+sc_port_base::warn_port_constructor() const
 {
-    warn("%s not implemented.\n", func);
+    static bool warned = false;
+    if (!warned) {
+        SC_REPORT_INFO(SC_ID_IEEE_1666_DEPRECATION_,
+                "interface and/or port binding in port constructors "
+                "is deprecated");
+        warned = true;
+    }
 }
 
 void
index c4160bafee87dabaec07f2549dfbe445d0a4475f..2a454f3a0aee3a1eedbe3f8f2ed0e48ff6a783b7 100644 (file)
@@ -79,7 +79,7 @@ class sc_port_base : public sc_object
     sc_port_base(const char *name, int n, sc_port_policy p);
     virtual ~sc_port_base();
 
-    void warn_unimpl(const char *func) const;
+    void warn_port_constructor() const;
 
     int maxSize() const;
     int size() const;
@@ -258,40 +258,34 @@ class sc_port : public sc_port_b<IF>
     // Deprecated binding constructors.
     explicit sc_port(const IF &interface) : sc_port_b<IF>(N, P)
     {
-        this->warn_unimpl(__PRETTY_FUNCTION__);
-        // Should warn that these are deprecated. See Accellera sc_port.h.
+        this->warn_port_constructor();
         sc_port_b<IF>::bind(const_cast<IF &>(interface));
     }
     sc_port(const char *name, const IF &interface) : sc_port_b<IF>(name, N, P)
     {
-        this->warn_unimpl(__PRETTY_FUNCTION__);
-        // Should warn that these are deprecated. See Accellera sc_port.h.
+        this->warn_port_constructor();
         sc_port_b<IF>::bind(const_cast<IF &>(interface));
     }
     explicit sc_port(sc_port_b<IF> &parent) : sc_port_b<IF>(N, P)
     {
-        this->warn_unimpl(__PRETTY_FUNCTION__);
-        // Should warn that these are deprecated. See Accellera sc_port.h.
+        this->warn_port_constructor();
         sc_port_b<IF>::bind(parent);
     }
     sc_port(const char *name, sc_port_b<IF> &parent) :
         sc_port_b<IF>(name, N, P)
     {
-        this->warn_unimpl(__PRETTY_FUNCTION__);
-        // Should warn that these are deprecated. See Accellera sc_port.h.
+        this->warn_port_constructor();
         sc_port_b<IF>::bind(parent);
     }
     explicit sc_port(sc_port<IF, N, P> &parent) : sc_port_b<IF>(N, P)
     {
-        this->warn_unimpl(__PRETTY_FUNCTION__);
-        // Should warn that these are deprecated. See Accellera sc_port.h.
+        this->warn_port_constructor();
         sc_port_b<IF>::bind(parent);
     }
     sc_port(const char *name, sc_port<IF, N, P> &parent) :
         sc_port_b<IF>(name, N, P)
     {
-        this->warn_unimpl(__PRETTY_FUNCTION__);
-        // Should warn that these are deprecated. See Accellera sc_port.h.
+        this->warn_port_constructor();
         sc_port_b<IF>::bind(parent);
     }