Dropping fast_float from StringUtil.h shrank the include graph every TU
in its closure had been leaning on, and GCC 16.2's leaner libstdc++
surfaced the reliance as build failures (GameDatabase.cpp, IopBios.cpp
on MinGW). Swept the whole closure -- 29 TUs and the 185 project headers
they pull -- for symbols resolved only through std-header transitivity,
and gave every file its own includes: <algorithm> and <utility> where
std::find/none_of/move live, <cmath> in the GSVector umbrella for the
sqrtf its fragments use, <system_error> in StringUtil.h for std::errc,
<cerrno>, <iterator>, <cstring> where named, and <string.h> in
retro_miscellaneous.h so the BIT*_CLEAR_ALL macros expand anywhere.
PRI_SIZET stays as-is: inttypes.h is the expansion site's include, and
MSVC 2005 has no such header.
Verified with a full pcsx2_libretro.so rebuild, the failing objects
through the Makefile path, the 36-TU emitter gate, and C89 checks on
the touched C header.
Every remaining warning in the first green aarch64 build (job 2111537),
each verified per-TU silent after the fix, none changing behavior:
- sign-compare (14 sites): FileSystem read/write result checks compare
in size_t after the positive-size guard; CDVD NVRAM bounds in int;
Patch loops index cast at the comparison; GSLocalMemory tw*th in u32;
MTGS ring positions keep the atomic loads' int instead of widening;
R5900/R3000A cycle checks cast the small event operand to the signed
side, preserving the deliberate wraparound-delta semantics rather than
widening the delta and destroying them.
- fallthrough (4): annotated at Hw.cpp TAG_END, Interpreter GAME_LOADING,
PAD config exit ("on purpose (but I don't know why)" -- annotated, not
explained), GSHwHack bloom state machine.
- enum/non-enum conditionals (4): the non-enum arm gets the enum's
integer type at GSRendererHW/GSTextureCache PSMCT24 selection,
GSDeviceVK dirty flags, VKShaderCache debug messages.
- unused variables: main.cpp's retro_vfs_interface_info was dead since
the hybrid-VFS rework -- deleted; vtlb guest_addr and MultiISA q_div
move inside the non-arm64 arm that consumes them; GSDeviceSW's
x_is_identity is consumed only by the SIMD fast path and is marked.
- CsoFileReader initializes in declaration order; TextureDecompress
value-initializes the 16 fallback pixels instead of memset on a class;
main.cpp loses a nested /* that made a comment swallow its neighbor.
- vendored, fixed at source with comments: cpuinfo's Raspberry Pi fixup
declared a 64-byte static bound over the 9-byte revision buffer every
caller actually passes (api.h already knew the right bound);
clog's stderr writes consume the warn_unused_result value ((void)
does not silence glibc's attribute); vk_mem_alloc's assert-only and
debug-gated locals are marked, and the VMA_DEBUG_MARGIN dead branches
move to the preprocessor where -Wtype-limits cannot see them.
Full lean build links and boots; emitter gates 35/35; the byte suites
covering the one emitter-adjacent change are green in the previous
commit.
Three exported helpers in common/ have no callers anywhere in the tree:
- StringUtil::toUpper
- StringUtil::UTF8StringToWideString (both overloads, _WIN32 only)
- FileSystem::RenamePath (Win32 and POSIX implementations)
Drop their declarations and definitions. toLower, WideStringToUTF8String
and DeleteDirectory live immediately adjacent to the removed code and are
still in use, so the surrounding _WIN32 guards and the rename()/MoveFileEx
neighbours are left intact.