diff --git a/fasm-plugin/fasm.cc b/fasm-plugin/fasm.cc
index 7999c22..4ddfdb2 100644
--- a/fasm-plugin/fasm.cc
+++ b/fasm-plugin/fasm.cc
@@ -36,7 +36,7 @@
 	WriteFasm() : Backend("fasm", "Write out FASM features") {}
 
 
-	void help() YS_OVERRIDE {
+	void help() override {
 		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 		log("\n");
 		log("    write_fasm -part_json <part_json_filename> <filename>\n");
@@ -45,7 +45,7 @@
 		log("\n");
 	}
 
-	void execute(std::ostream *&f, std::string filename,  std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE {
+	void execute(std::ostream *&f, std::string filename,  std::vector<std::string> args, RTLIL::Design *design) override {
 		size_t argidx = 1;
 		std::string part_json;
 		if (args[argidx] == "-part_json" && argidx + 1 < args.size()) {
diff --git a/xdc-plugin/xdc.cc b/xdc-plugin/xdc.cc
index 85ed1d7..7237565 100644
--- a/xdc-plugin/xdc.cc
+++ b/xdc-plugin/xdc.cc
@@ -74,7 +74,7 @@
 		register_in_tcl_interpreter(pass_name);
 	}
 
-	void help() YS_OVERRIDE
+	void help() override
 	{
 		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 		log("\n");
@@ -86,7 +86,7 @@
 		log("\n");
 	}
 
-	void execute(std::vector<std::string> args, RTLIL::Design* design) YS_OVERRIDE
+	void execute(std::vector<std::string> args, RTLIL::Design* design) override
 	{
 		if (args.size() < 2) {
 			log_cmd_error("No port specified.\n");
@@ -127,7 +127,7 @@
 		register_in_tcl_interpreter(pass_name);
 	}
 
-	void help() YS_OVERRIDE	{
+	void help() override	{
 		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 		log("\n");
 		log("   get_iobanks <bank_number>\n");
@@ -136,7 +136,7 @@
 		log("\n");
 	}
 
-	void execute(std::vector<std::string> args, RTLIL::Design* ) YS_OVERRIDE {
+	void execute(std::vector<std::string> args, RTLIL::Design* ) override {
 		if (args.size() < 2) {
 			log_cmd_error("%s: Missing bank number.\n", pass_name.c_str());
 		}
@@ -160,7 +160,7 @@
 		register_in_tcl_interpreter(pass_name);
 	}
 
-	void help() YS_OVERRIDE	{
+	void help() override	{
 		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 		log("\n");
 		log("    set_property PROPERTY VALUE OBJECT\n");
@@ -169,7 +169,7 @@
 		log("\n");
 	}
 
-	void execute(std::vector<std::string> args, RTLIL::Design* design) YS_OVERRIDE {
+	void execute(std::vector<std::string> args, RTLIL::Design* design) override {
 		if (design->top_module() == nullptr) {
 			log_cmd_error("No top module detected\n");
 		}
@@ -375,7 +375,7 @@
 		, GetIOBanks(std::bind(&ReadXdc::get_bank_tiles, this))
 		, SetProperty(std::bind(&ReadXdc::get_bank_tiles, this)) {}
 
-	void help() YS_OVERRIDE {
+	void help() override {
 		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 		log("\n");
 		log("    read_xdc -part_json <part_json_filename> <filename>\n");
@@ -384,7 +384,7 @@
 		log("\n");
 	}
 
-	void execute(std::istream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design*) YS_OVERRIDE {
+	void execute(std::istream *&f, std::string filename, std::vector<std::string> args, RTLIL::Design*) override {
                 if (args.size() < 2) {
                         log_cmd_error("Missing script file.\n");
 		}
@@ -444,7 +444,7 @@
 		register_in_tcl_interpreter(pass_name);
 	}
 
-	void help() YS_OVERRIDE
+	void help() override
 	{
 		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|
 		log("\n");
@@ -454,7 +454,7 @@
 		log("\n");
 	}
 
-	void execute(std::vector<std::string> args, RTLIL::Design* ) YS_OVERRIDE {
+	void execute(std::vector<std::string> args, RTLIL::Design* ) override {
                 if (args.size() < 2) {
                         log_cmd_error("Missing JSON file.\n");
 		}
