Merge pull request #9310 from leoetlino/compile-time-errors-format

Turn format string issues into compile-time errors
This commit is contained in:
Léo Lam 2020-12-05 23:58:04 +01:00 committed by GitHub
commit c8cb330df0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 10 additions and 2 deletions

View File

@ -93,6 +93,12 @@ else()
if (HAS_STRINGOP_TRUNCATION_WARNING) if (HAS_STRINGOP_TRUNCATION_WARNING)
check_and_add_flag(NO_STRINGOP_TRUNCATION -Wno-stringop-truncation) check_and_add_flag(NO_STRINGOP_TRUNCATION -Wno-stringop-truncation)
endif() 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() endif()
# These aren't actually needed for C11/C++11 # These aren't actually needed for C11/C++11

View File

@ -14,6 +14,7 @@
#include "Core/PowerPC/Jit64Common/Jit64AsmCommon.h" #include "Core/PowerPC/Jit64Common/Jit64AsmCommon.h"
#include "Core/PowerPC/Jit64Common/Jit64PowerPCState.h" #include "Core/PowerPC/Jit64Common/Jit64PowerPCState.h"
#include <fmt/format.h>
#include <gtest/gtest.h> #include <gtest/gtest.h>
namespace namespace
@ -109,7 +110,7 @@ TEST(Jit64, ConvertDoubleToSingle)
const u32 expected = ConvertToSingle(input); const u32 expected = ConvertToSingle(input);
const u32 actual = routines.wrapped_cdts(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); EXPECT_EQ(expected, actual);
} }

View File

@ -14,6 +14,7 @@
#include "Core/PowerPC/Jit64Common/Jit64AsmCommon.h" #include "Core/PowerPC/Jit64Common/Jit64AsmCommon.h"
#include "Core/PowerPC/Jit64Common/Jit64PowerPCState.h" #include "Core/PowerPC/Jit64Common/Jit64PowerPCState.h"
#include <fmt/format.h>
#include <gtest/gtest.h> #include <gtest/gtest.h>
namespace namespace
@ -98,7 +99,7 @@ TEST(Jit64, Frsqrte)
u64 actual = routines.wrapped_frsqrte(ivalue, fpscr); 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); EXPECT_EQ(expected, actual);
} }