From 0b46bd304412596b62219739095c1c88fd9884bf Mon Sep 17 00:00:00 2001 From: JJ Marr Date: Mon, 23 Sep 2024 09:17:29 -0400 Subject: [PATCH] Enable performance-no-automatic-move Variables can be automatically moved when a function returns. However, declaring a variable as const prevents that move from occuring (as the move modifies the moved-from variable). --- .clang-tidy | 2 +- src/formula/formula.cpp | 2 +- src/formula/function.cpp | 6 +++--- src/gui/dialogs/multiplayer/mp_join_game.cpp | 3 ++- src/preferences/preferences.cpp | 2 +- src/serialization/string_utils.cpp | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index e9d1b50ac1a..cdd6be69cf5 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,4 +1,4 @@ --- -Checks: '-*,bugprone-move-forwarding-reference,bugprone-use-after-move,cppcoreguidelines-rvalue-reference-param-not-moved,modernize-use-nullptr,performance-move-const-arg,performance-move-constructor-init,performance-unnecessary-value-param'' +Checks: '-*,bugprone-move-forwarding-reference,bugprone-use-after-move,cppcoreguidelines-rvalue-reference-param-not-moved,modernize-use-nullptr,performance-move-const-arg,performance-move-constructor-init,performance-no-automatic-move,performance-unnecessary-value-param' WarningsAsErrors: true ... diff --git a/src/formula/formula.cpp b/src/formula/formula.cpp index cdf8770efb6..c172bc7378e 100644 --- a/src/formula/formula.cpp +++ b/src/formula/formula.cpp @@ -634,7 +634,7 @@ public: private: variant execute(const formula_callable& variables, formula_debugger*fdb) const { - const variant left = left_->evaluate(variables, add_debug_info(fdb,0,"left .")); + variant left = left_->evaluate(variables, add_debug_info(fdb,0,"left .")); if(!left.is_callable()) { if(left.is_list()) { list_callable list_call(left); diff --git a/src/formula/function.cpp b/src/formula/function.cpp index 8a731e65250..46e33dae618 100644 --- a/src/formula/function.cpp +++ b/src/formula/function.cpp @@ -247,7 +247,7 @@ DEFINE_WFL_FUNCTION(debug_float, 2, 3) { const args_list& arguments = args(); const variant var0 = arguments[0]->evaluate(variables, fdb); - const variant var1 = arguments[1]->evaluate(variables, fdb); + variant var1 = arguments[1]->evaluate(variables, fdb); const map_location location = var0.convert_to()->loc(); std::string text; @@ -266,7 +266,7 @@ DEFINE_WFL_FUNCTION(debug_float, 2, 3) DEFINE_WFL_FUNCTION(debug_print, 1, 2) { - const variant var1 = args()[0]->evaluate(variables, fdb); + variant var1 = args()[0]->evaluate(variables, fdb); std::string str1, str2; @@ -1081,7 +1081,7 @@ DEFINE_WFL_FUNCTION(zip, 1, -1) DEFINE_WFL_FUNCTION(reduce, 2, 3) { const variant items = args()[0]->evaluate(variables, fdb); - const variant initial = args().size() == 2 ? variant() : args()[1]->evaluate(variables, fdb); + variant initial = args().size() == 2 ? variant() : args()[1]->evaluate(variables, fdb); if(items.num_elements() == 0) { return initial; diff --git a/src/gui/dialogs/multiplayer/mp_join_game.cpp b/src/gui/dialogs/multiplayer/mp_join_game.cpp index 2e8f06f7ae3..f33a288685f 100644 --- a/src/gui/dialogs/multiplayer/mp_join_game.cpp +++ b/src/gui/dialogs/multiplayer/mp_join_game.cpp @@ -215,7 +215,8 @@ static std::string generate_user_description(const config& side) const std::string controller_type = side["controller"].str(); const std::string reservation = side["current_player"].str(); - const std::string owner = side["player_id"].str(); + // Making this string const means it can't be automatically moved when returned from this method + std::string owner = side["player_id"].str(); if(controller_type == side_controller::ai) { return _("Computer Player"); diff --git a/src/preferences/preferences.cpp b/src/preferences/preferences.cpp index bc88ed81cc1..b4667da4e31 100644 --- a/src/preferences/preferences.cpp +++ b/src/preferences/preferences.cpp @@ -1538,7 +1538,7 @@ void prefs::set_user_servers_list(const std::vector& v std::string prefs::network_host() { - const std::string res = preferences_[prefs_list::host]; + std::string res = preferences_[prefs_list::host]; if(res.empty()) { return builtin_servers_list().front().address; } else { diff --git a/src/serialization/string_utils.cpp b/src/serialization/string_utils.cpp index 73153584cb1..0b892e0b005 100644 --- a/src/serialization/string_utils.cpp +++ b/src/serialization/string_utils.cpp @@ -763,7 +763,7 @@ std::string indent(const std::string& string, std::size_t indent_size) return string; } - const std::string indent(indent_size, ' '); + std::string indent(indent_size, ' '); if(string.empty()) { return indent;