mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	Introducing YS_OVERRIDE, YS_FINAL, YS_ATTRIBUTE, YS_NORETURN
This commit is contained in:
		
							parent
							
								
									fe829bdbdc
								
							
						
					
					
						commit
						a112b10934
					
				
					 5 changed files with 30 additions and 26 deletions
				
			
		
							
								
								
									
										16
									
								
								kernel/log.h
									
										
									
									
									
								
							
							
						
						
									
										16
									
								
								kernel/log.h
									
										
									
									
									
								
							|  | @ -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[]; | ||||
|  |  | |||
|  | @ -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(); | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
|  | @ -102,18 +102,22 @@ | |||
| #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); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue