diff --git a/Source/CMakeLists.txt b/Source/CMakeLists.txt index 3b70daf4f2..61b3695cfe 100644 --- a/Source/CMakeLists.txt +++ b/Source/CMakeLists.txt @@ -93,6 +93,12 @@ else() if (HAS_STRINGOP_TRUNCATION_WARNING) check_and_add_flag(NO_STRINGOP_TRUNCATION -Wno-stringop-truncation) endif() + + # Format string issues that the compiler can detect should be compile time errors. + check_cxx_compiler_flag(-Wformat HAS_FORMAT_WARNING) + if (HAS_FORMAT_WARNING) + check_and_add_flag(FORMAT_WARNING_TO_ERROR -Werror=format) + endif() endif() # These aren't actually needed for C11/C++11 diff --git a/Source/UnitTests/Core/PowerPC/Jit64Common/ConvertDoubleToSingle.cpp b/Source/UnitTests/Core/PowerPC/Jit64Common/ConvertDoubleToSingle.cpp index 41ca31b273..aa4324968d 100644 --- a/Source/UnitTests/Core/PowerPC/Jit64Common/ConvertDoubleToSingle.cpp +++ b/Source/UnitTests/Core/PowerPC/Jit64Common/ConvertDoubleToSingle.cpp @@ -14,6 +14,7 @@ #include "Core/PowerPC/Jit64Common/Jit64AsmCommon.h" #include "Core/PowerPC/Jit64Common/Jit64PowerPCState.h" +#include #include namespace @@ -109,7 +110,7 @@ TEST(Jit64, ConvertDoubleToSingle) const u32 expected = ConvertToSingle(input); const u32 actual = routines.wrapped_cdts(input); - printf("%016llx -> %08x == %08x\n", input, actual, expected); + fmt::print("{:016x} -> {:08x} == {:08x}\n", input, actual, expected); EXPECT_EQ(expected, actual); } diff --git a/Source/UnitTests/Core/PowerPC/Jit64Common/Frsqrte.cpp b/Source/UnitTests/Core/PowerPC/Jit64Common/Frsqrte.cpp index 18e0ee8044..4dff5ff723 100644 --- a/Source/UnitTests/Core/PowerPC/Jit64Common/Frsqrte.cpp +++ b/Source/UnitTests/Core/PowerPC/Jit64Common/Frsqrte.cpp @@ -14,6 +14,7 @@ #include "Core/PowerPC/Jit64Common/Jit64AsmCommon.h" #include "Core/PowerPC/Jit64Common/Jit64PowerPCState.h" +#include #include namespace @@ -98,7 +99,7 @@ TEST(Jit64, Frsqrte) u64 actual = routines.wrapped_frsqrte(ivalue, fpscr); - printf("%016llx -> %016llx == %016llx\n", ivalue, actual, expected); + fmt::print("{:016x} -> {:016x} == {:016x}\n", ivalue, actual, expected); EXPECT_EQ(expected, actual); }