msvc: set warning level to /W4 globally

And fix a bunch of warnings
This commit is contained in:
Danila Malyutin 2023-09-02 21:45:06 +04:00
parent 89a2d48cf8
commit 785e480b62
13 changed files with 17 additions and 20 deletions

View File

@ -24,7 +24,7 @@ if (MSVC)
# Ensure that projects build with Unicode support. # Ensure that projects build with Unicode support.
add_definitions(-DUNICODE -D_UNICODE) add_definitions(-DUNICODE -D_UNICODE)
# /W3 - Level 3 warnings # /W4 - Level 4 warnings
# /MP - Multi-threaded compilation # /MP - Multi-threaded compilation
# /Zi - Output debugging information # /Zi - Output debugging information
# /Zm - Specifies the precompiled header memory allocation limit # /Zm - Specifies the precompiled header memory allocation limit
@ -61,7 +61,7 @@ if (MSVC)
/external:W0 # Sets the default warning level to 0 for external headers, effectively turning off warnings for external headers /external:W0 # Sets the default warning level to 0 for external headers, effectively turning off warnings for external headers
# Warnings # Warnings
/W3 /W4
/WX /WX
/we4062 # Enumerator 'identifier' in a switch of enum 'enumeration' is not handled /we4062 # Enumerator 'identifier' in a switch of enum 'enumeration' is not handled
@ -84,12 +84,16 @@ if (MSVC)
/wd4100 # 'identifier': unreferenced formal parameter /wd4100 # 'identifier': unreferenced formal parameter
/wd4324 # 'struct_name': structure was padded due to __declspec(align()) /wd4324 # 'struct_name': structure was padded due to __declspec(align())
/wd4201 # nonstandard extension used : nameless struct/union
) )
if (USE_CCACHE OR YUZU_USE_PRECOMPILED_HEADERS) if (USE_CCACHE OR YUZU_USE_PRECOMPILED_HEADERS)
# when caching, we need to use /Z7 to downgrade debug info to use an older but more cacheable format # when caching, we need to use /Z7 to downgrade debug info to use an older but more cacheable format
# Precompiled headers are deleted if not using /Z7. See https://github.com/nanoant/CMakePCHCompiler/issues/21 # Precompiled headers are deleted if not using /Z7. See https://github.com/nanoant/CMakePCHCompiler/issues/21
add_compile_options(/Z7) add_compile_options(/Z7)
# Avoid D9025 warning
string(REPLACE "/Zi" "" CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO}")
string(REPLACE "/Zi" "" CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG}")
else() else()
add_compile_options(/Zi) add_compile_options(/Zi)
endif() endif()

View File

@ -20,7 +20,6 @@ size_t Event::GetManagerIndex(const Type type) const {
default: default:
UNREACHABLE(); UNREACHABLE();
} }
return 3;
} }
void Event::SetAudioEvent(const Type type, const bool signalled) { void Event::SetAudioEvent(const Type type, const bool signalled) {

View File

@ -191,8 +191,6 @@ if (MSVC)
_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING
) )
target_compile_options(common PRIVATE target_compile_options(common PRIVATE
/W4
/we4242 # 'identifier': conversion from 'type1' to 'type2', possible loss of data /we4242 # 'identifier': conversion from 'type1' to 'type2', possible loss of data
/we4254 # 'operator': conversion from 'type1:field_bits' to 'type2:field_bits', possible loss of data /we4254 # 'operator': conversion from 'type1:field_bits' to 'type2:field_bits', possible loss of data
/we4800 # Implicit conversion from 'type' to bool. Possible information loss /we4800 # Implicit conversion from 'type' to bool. Possible information loss

View File

@ -156,7 +156,6 @@ Result KCapabilities::MapIoPage_(const u32 cap, KPageTable* page_table) {
const u64 phys_addr = MapIoPage{cap}.address.Value() * PageSize; const u64 phys_addr = MapIoPage{cap}.address.Value() * PageSize;
const size_t num_pages = 1; const size_t num_pages = 1;
const size_t size = num_pages * PageSize; const size_t size = num_pages * PageSize;
R_UNLESS(num_pages != 0, ResultInvalidSize);
R_UNLESS(phys_addr < phys_addr + size, ResultInvalidAddress); R_UNLESS(phys_addr < phys_addr + size, ResultInvalidAddress);
R_UNLESS(((phys_addr + size - 1) & ~PhysicalMapAllowedMask) == 0, ResultInvalidAddress); R_UNLESS(((phys_addr + size - 1) & ~PhysicalMapAllowedMask) == 0, ResultInvalidAddress);

View File

@ -160,8 +160,8 @@ u32 NvMap::PinHandle(NvMap::Handle::Id handle) {
u32 address{}; u32 address{};
auto& smmu_allocator = host1x.Allocator(); auto& smmu_allocator = host1x.Allocator();
auto& smmu_memory_manager = host1x.MemoryManager(); auto& smmu_memory_manager = host1x.MemoryManager();
while (!(address = while ((address = smmu_allocator.Allocate(
smmu_allocator.Allocate(static_cast<u32>(handle_description->aligned_size)))) { static_cast<u32>(handle_description->aligned_size))) == 0) {
// Free handles until the allocation succeeds // Free handles until the allocation succeeds
std::scoped_lock queueLock(unmap_queue_lock); std::scoped_lock queueLock(unmap_queue_lock);
if (auto freeHandleDesc{unmap_queue.front()}) { if (auto freeHandleDesc{unmap_queue.front()}) {

View File

@ -477,7 +477,8 @@ public:
return ResultInternalError; return ResultInternalError;
} }
PCCERT_CONTEXT some_cert = nullptr; PCCERT_CONTEXT some_cert = nullptr;
while ((some_cert = CertEnumCertificatesInStore(returned_cert->hCertStore, some_cert))) { while ((some_cert = CertEnumCertificatesInStore(returned_cert->hCertStore, some_cert)) !=
nullptr) {
out_certs->emplace_back(static_cast<u8*>(some_cert->pbCertEncoded), out_certs->emplace_back(static_cast<u8*>(some_cert->pbCertEncoded),
static_cast<u8*>(some_cert->pbCertEncoded) + static_cast<u8*>(some_cert->pbCertEncoded) +
some_cert->cbCertEncoded); some_cert->cbCertEncoded);

View File

@ -368,9 +368,9 @@ int main(int argc, char** argv) {
if (auto room = network.GetRoom().lock()) { if (auto room = network.GetRoom().lock()) {
AnnounceMultiplayerRoom::GameInfo preferred_game_info{.name = preferred_game, AnnounceMultiplayerRoom::GameInfo preferred_game_info{.name = preferred_game,
.id = preferred_game_id}; .id = preferred_game_id};
if (!room->Create(room_name, room_description, bind_address, port, password, max_members, if (!room->Create(room_name, room_description, bind_address, static_cast<u16>(port),
username, preferred_game_info, std::move(verify_backend), ban_list, password, max_members, username, preferred_game_info,
enable_yuzu_mods)) { std::move(verify_backend), ban_list, enable_yuzu_mods)) {
LOG_INFO(Network, "Failed to create room: "); LOG_INFO(Network, "Failed to create room: ");
return -1; return -1;
} }

View File

@ -37,8 +37,6 @@ add_library(input_common STATIC
if (MSVC) if (MSVC)
target_compile_options(input_common PRIVATE target_compile_options(input_common PRIVATE
/W4
/we4242 # 'identifier': conversion from 'type1' to 'type2', possible loss of data /we4242 # 'identifier': conversion from 'type1' to 'type2', possible loss of data
/we4254 # 'operator': conversion from 'type1:field_bits' to 'type2:field_bits', possible loss of data /we4254 # 'operator': conversion from 'type1:field_bits' to 'type2:field_bits', possible loss of data
/we4800 # Implicit conversion from 'type' to bool. Possible information loss /we4800 # Implicit conversion from 'type' to bool. Possible information loss

View File

@ -805,7 +805,7 @@ IPv4Address Room::RoomImpl::GenerateFakeIPAddress() {
std::uniform_int_distribution<> dis(0x01, 0xFE); // Random byte between 1 and 0xFE std::uniform_int_distribution<> dis(0x01, 0xFE); // Random byte between 1 and 0xFE
do { do {
for (std::size_t i = 2; i < result_ip.size(); ++i) { for (std::size_t i = 2; i < result_ip.size(); ++i) {
result_ip[i] = dis(random_gen); result_ip[i] = static_cast<u8>(dis(random_gen));
} }
} while (!IsValidFakeIPAddress(result_ip)); } while (!IsValidFakeIPAddress(result_ip));

View File

@ -245,8 +245,6 @@ target_link_libraries(shader_recompiler PUBLIC common fmt::fmt sirit)
if (MSVC) if (MSVC)
target_compile_options(shader_recompiler PRIVATE target_compile_options(shader_recompiler PRIVATE
/W4
/we4242 # 'identifier': conversion from 'type1' to 'type2', possible loss of data /we4242 # 'identifier': conversion from 'type1' to 'type2', possible loss of data
/we4254 # 'operator': conversion from 'type1:field_bits' to 'type2:field_bits', possible loss of data /we4254 # 'operator': conversion from 'type1:field_bits' to 'type2:field_bits', possible loss of data
/we4800 # Implicit conversion from 'type' to bool. Possible information loss /we4800 # Implicit conversion from 'type' to bool. Possible information loss

View File

@ -55,7 +55,7 @@ TEST_CASE("RingBuffer: Basic Tests", "[common]") {
// Pushing more values than space available should partially succeed. // Pushing more values than space available should partially succeed.
{ {
std::vector<char> to_push(6); std::vector<char> to_push(6);
std::iota(to_push.begin(), to_push.end(), 88); std::iota(to_push.begin(), to_push.end(), static_cast<char>(88));
const std::size_t count = buf.Push(to_push); const std::size_t count = buf.Push(to_push);
REQUIRE(count == 3U); REQUIRE(count == 3U);
} }

View File

@ -194,7 +194,7 @@ QWidget* Widget::CreateRadioGroup(std::function<std::string()>& serializer,
return group; return group;
} }
const auto get_selected = [=]() -> u32 { const auto get_selected = [=]() -> int {
for (const auto& [id, button] : radio_buttons) { for (const auto& [id, button] : radio_buttons) {
if (button->isChecked()) { if (button->isChecked()) {
return id; return id;

View File

@ -265,7 +265,7 @@ int main(int argc, char** argv) {
password = match[2]; password = match[2];
address = match[3]; address = match[3];
if (!match[4].str().empty()) if (!match[4].str().empty())
port = std::stoi(match[4]); port = static_cast<u16>(std::stoi(match[4]));
std::regex nickname_re("^[a-zA-Z0-9._\\- ]+$"); std::regex nickname_re("^[a-zA-Z0-9._\\- ]+$");
if (!std::regex_match(nickname, nickname_re)) { if (!std::regex_match(nickname, nickname_re)) {
std::cout std::cout