Introducing YS_OVERRIDE, YS_FINAL, YS_ATTRIBUTE, YS_NORETURN
authorClifford Wolf <clifford@clifford.at>
Sun, 9 Nov 2014 09:55:04 +0000 (10:55 +0100)
committerClifford Wolf <clifford@clifford.at>
Sun, 9 Nov 2014 09:55:04 +0000 (10:55 +0100)
kernel/log.h
kernel/modtools.h
kernel/register.h
kernel/yosys.h
passes/cmds/trace.cc

index b003aba22c64f7b0a9e629e4837d0d059f56a4ee..b69e2ee2d6585ab7eee6d400c90d62366ff3f989 100644 (file)
@@ -52,13 +52,13 @@ extern int log_verbose_level;
 void logv(const char *format, va_list ap);
 void logv_header(const char *format, va_list ap);
 void logv_warning(const char *format, va_list ap);
-_NORETURN_ void logv_error(const char *format, va_list ap) __attribute__((noreturn));
+YS_NORETURN void logv_error(const char *format, va_list ap) YS_ATTRIBUTE(noreturn);
 
-void log(const char *format, ...)  __attribute__((format(printf, 1, 2)));
-void log_header(const char *format, ...) __attribute__((format(printf, 1, 2)));
-void log_warning(const char *format, ...) __attribute__((format(printf, 1, 2)));
-_NORETURN_ void log_error(const char *format, ...) __attribute__((format(printf, 1, 2))) __attribute__((noreturn));
-_NORETURN_ void log_cmd_error(const char *format, ...) __attribute__((format(printf, 1, 2))) __attribute__((noreturn));
+void log(const char *format, ...)  YS_ATTRIBUTE(format(printf, 1, 2));
+void log_header(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2));
+void log_warning(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2));
+YS_NORETURN void log_error(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2), noreturn);
+YS_NORETURN void log_cmd_error(const char *format, ...) YS_ATTRIBUTE(format(printf, 1, 2), noreturn);
 
 void log_spacer();
 void log_push();
@@ -92,14 +92,14 @@ static inline void log_assert_worker(bool cond, const char *expr, const char *fi
 #ifdef YOSYS_ENABLE_COVER
 
 #define cover(_id) do { \
-    static CoverData __d __attribute__((section("yosys_cover_list"), aligned(1), used)) = { __FILE__, __FUNCTION__, _id, __LINE__, 0 }; \
+    static CoverData __d YS_ATTRIBUTE(section("yosys_cover_list"), aligned(1), used) = { __FILE__, __FUNCTION__, _id, __LINE__, 0 }; \
     __d.counter++; \
 } while (0)
 
 struct CoverData {
        const char *file, *func, *id;
        int line, counter;
-} __attribute__ ((packed));
+} YS_ATTRIBUTE(packed);
 
 // this two symbols are created by the linker for the "yosys_cover_list" ELF section
 extern "C" struct CoverData __start_yosys_cover_list[];
index 1b6968d747450c5265aa0f815e2bf0f4975e7e2c..e3020ae3cf443c1ab0756f967e1c5318783cfcf6 100644 (file)
@@ -102,7 +102,7 @@ struct ModIndex : public RTLIL::Monitor
                auto_reload_module = false;
        }
 
-       virtual void notify_connect(RTLIL::Cell *cell, const RTLIL::IdString &port, const RTLIL::SigSpec &old_sig, RTLIL::SigSpec &sig) OVERRIDE
+       virtual void notify_connect(RTLIL::Cell *cell, const RTLIL::IdString &port, const RTLIL::SigSpec &old_sig, RTLIL::SigSpec &sig) YS_OVERRIDE
        {
                if (auto_reload_module)
                        reload_module();
index a49675ed2d970545905d05d90ed55d28f4acac97..5214dd9a3162e8d3a607a5be713380783dc27c56 100644 (file)
@@ -73,7 +73,7 @@ struct Frontend : Pass
        Frontend(std::string name, std::string short_help = "** document me **");
        virtual void run_register();
        virtual ~Frontend();
-       virtual void execute(std::vector<std::string> args, RTLIL::Design *design) OVERRIDE FINAL;
+       virtual void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE YS_FINAL;
        virtual void execute(std::istream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design *design) = 0;
 
        static std::vector<std::string> next_args;
@@ -89,7 +89,7 @@ struct Backend : Pass
        Backend(std::string name, std::string short_help = "** document me **");
        virtual void run_register();
        virtual ~Backend();
-       virtual void execute(std::vector<std::string> args, RTLIL::Design *design) OVERRIDE FINAL;
+       virtual void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE YS_FINAL;
        virtual void execute(std::ostream *&f, std::string filename,  std::vector<std::string> args, RTLIL::Design *design) = 0;
 
        void extra_args(std::ostream *&f, std::string &filename, std::vector<std::string> args, size_t argidx);
index 11f356adcaed6353cafb3922656da904c02eb514..b64739ad4e36b60406a916cb8753a2d2c43a40f8 100644 (file)
 #define USING_YOSYS_NAMESPACE    using namespace Yosys;
 
 #if __cplusplus >= 201103L
-#  define OVERRIDE override
-#  define FINAL final
+#  define YS_OVERRIDE override
+#  define YS_FINAL final
 #else
-#  define OVERRIDE
-#  define FINAL
+#  define YS_OVERRIDE
+#  define YS_FINAL
 #endif
 
-#if !defined(__GNUC__) && !defined(__clang__)
-#  define __attribute__(...)
-#  define _NORETURN_ __declspec(noreturn)
+#if defined(__GNUC__) || defined(__clang__)
+#  define YS_ATTRIBUTE(...) __attribute__((__VA_ARGS__))
+#  define YS_NORETURN
+#elif defined(_MSC_VER)
+#  define YS_ATTRIBUTE(...)
+#  define YS_NORETURN __declspec(noreturn)
 #else
-#  define _NORETURN_
+#  define YS_ATTRIBUTE(...)
+#  define YS_NORETURN
 #endif
 
 YOSYS_NAMESPACE_BEGIN
@@ -125,7 +129,7 @@ namespace RTLIL {
        struct Cell;
 }
 
-std::string stringf(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
+std::string stringf(const char *fmt, ...) YS_ATTRIBUTE(format(printf, 1, 2));
 std::string vstringf(const char *fmt, va_list ap);
 int readsome(std::istream &f, char *s, int n);
 std::string next_token(std::string &text, const char *sep);
index 10c67195f5980f3ac001173b148f09ee922fdefb..e05fedb3540a9bb47592324444961228f5304ee0 100644 (file)
@@ -25,34 +25,34 @@ PRIVATE_NAMESPACE_BEGIN
 
 struct TraceMonitor : public RTLIL::Monitor
 {
-       virtual void notify_module_add(RTLIL::Module *module) OVERRIDE
+       virtual void notify_module_add(RTLIL::Module *module) YS_OVERRIDE
        {
                log("#TRACE# Module add: %s\n", log_id(module));
        }
 
-       virtual void notify_module_del(RTLIL::Module *module) OVERRIDE
+       virtual void notify_module_del(RTLIL::Module *module) YS_OVERRIDE
        {
                log("#TRACE# Module delete: %s\n", log_id(module));
        }
 
-       virtual void notify_connect(RTLIL::Cell *cell, const RTLIL::IdString &port, const RTLIL::SigSpec &old_sig, RTLIL::SigSpec &sig) OVERRIDE
+       virtual void notify_connect(RTLIL::Cell *cell, const RTLIL::IdString &port, const RTLIL::SigSpec &old_sig, RTLIL::SigSpec &sig) YS_OVERRIDE
        {
                log("#TRACE# Cell connect: %s.%s.%s = %s (was: %s)\n", log_id(cell->module), log_id(cell), log_id(port), log_signal(sig), log_signal(old_sig));
        }
 
-       virtual void notify_connect(RTLIL::Module *module, const RTLIL::SigSig &sigsig) OVERRIDE
+       virtual void notify_connect(RTLIL::Module *module, const RTLIL::SigSig &sigsig) YS_OVERRIDE
        {
                log("#TRACE# Connection in module %s: %s = %s\n", log_id(module), log_signal(sigsig.first), log_signal(sigsig.second));
        }
 
-       virtual void notify_connect(RTLIL::Module *module, const std::vector<RTLIL::SigSig> &sigsig_vec) OVERRIDE
+       virtual void notify_connect(RTLIL::Module *module, const std::vector<RTLIL::SigSig> &sigsig_vec) YS_OVERRIDE
        {
                log("#TRACE# New connections in module %s:\n", log_id(module));
                for (auto &sigsig : sigsig_vec)
                        log("##    %s = %s\n", log_signal(sigsig.first), log_signal(sigsig.second));
        }
 
-       virtual void notify_blackout(RTLIL::Module *module) OVERRIDE
+       virtual void notify_blackout(RTLIL::Module *module) YS_OVERRIDE
        {
                log("#TRACE# Blackout in module %s:\n", log_id(module));
        }