msvc: set warning level to /W4 globally
And fix a bunch of warnings
This commit is contained in:
		| @@ -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() | ||||||
|   | |||||||
| @@ -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) { | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
| @@ -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); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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()}) { | ||||||
|   | |||||||
| @@ -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); | ||||||
|   | |||||||
| @@ -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; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
| @@ -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)); | ||||||
|  |  | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
| @@ -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); | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -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; | ||||||
|   | |||||||
| @@ -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 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user