1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Enable IPO/LTO by default except for debug builds (#14198)

Test case:

```
$ cmake . -DRUN_IN_PLACE=TRUE -DCMAKE_BUILD_TYPE=Release -DBUILD_SERVER=TRUE -DENABLE_TOUCH=FALSE

         minetest minetestserver
W/o LTO:      13M           7.3M
W/  LTO:      11M           5.9M
difference:   15%            19%
```

Also fixes various compiler warnings resulting from compilation using LTO.

---------

Signed-off-by: David Heidelberg <david@ixit.cz>
This commit is contained in:
David Heidelberg 2024-02-09 00:01:12 +01:00 committed by GitHub
parent adaa4cc2f3
commit eb52a149a0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 49 additions and 33 deletions

View file

@ -167,26 +167,6 @@ int ModApiServer::l_get_player_information(lua_State *L)
return 1;
}
/*
Be careful not to introduce a depdendency on the connection to
the peer here. This function is >>REQUIRED<< to still be able to return
values even when the peer unexpectedly disappears.
Hence all the ConInfo values here are optional.
*/
auto getConInfo = [&] (con::rtt_stat_type type, float *value) -> bool {
return server->getClientConInfo(player->getPeerId(), type, value);
};
float min_rtt, max_rtt, avg_rtt, min_jitter, max_jitter, avg_jitter;
bool have_con_info =
getConInfo(con::MIN_RTT, &min_rtt) &&
getConInfo(con::MAX_RTT, &max_rtt) &&
getConInfo(con::AVG_RTT, &avg_rtt) &&
getConInfo(con::MIN_JITTER, &min_jitter) &&
getConInfo(con::MAX_JITTER, &max_jitter) &&
getConInfo(con::AVG_JITTER, &avg_jitter);
ClientInfo info;
if (!server->getClientInfo(player->getPeerId(), info)) {
warningstream << FUNCTION_NAME << ": no client info?!" << std::endl;
@ -211,6 +191,26 @@ int ModApiServer::l_get_player_information(lua_State *L)
}
lua_settable(L, table);
/*
Be careful not to introduce a depdendency on the connection to
the peer here. This function is >>REQUIRED<< to still be able to return
values even when the peer unexpectedly disappears.
Hence all the ConInfo values here are optional.
*/
auto getConInfo = [&] (con::rtt_stat_type type, float *value) -> bool {
return server->getClientConInfo(player->getPeerId(), type, value);
};
float min_rtt, max_rtt, avg_rtt, min_jitter, max_jitter, avg_jitter;
bool have_con_info =
getConInfo(con::MIN_RTT, &min_rtt) &&
getConInfo(con::MAX_RTT, &max_rtt) &&
getConInfo(con::AVG_RTT, &avg_rtt) &&
getConInfo(con::MIN_JITTER, &min_jitter) &&
getConInfo(con::MAX_JITTER, &max_jitter) &&
getConInfo(con::AVG_JITTER, &avg_jitter);
if (have_con_info) { // may be missing
lua_pushstring(L, "min_rtt");
lua_pushnumber(L, min_rtt);