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.
 | 
			
		||||
    add_definitions(-DUNICODE -D_UNICODE)
 | 
			
		||||
 | 
			
		||||
    # /W3                 - Level 3 warnings
 | 
			
		||||
    # /W4                 - Level 4 warnings
 | 
			
		||||
    # /MP                 - Multi-threaded compilation
 | 
			
		||||
    # /Zi                 - Output debugging information
 | 
			
		||||
    # /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
 | 
			
		||||
 | 
			
		||||
        # Warnings
 | 
			
		||||
        /W3
 | 
			
		||||
        /W4
 | 
			
		||||
        /WX
 | 
			
		||||
 | 
			
		||||
        /we4062 # Enumerator 'identifier' in a switch of enum 'enumeration' is not handled
 | 
			
		||||
@@ -84,12 +84,16 @@ if (MSVC)
 | 
			
		||||
 | 
			
		||||
        /wd4100 # 'identifier': unreferenced formal parameter
 | 
			
		||||
        /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)
 | 
			
		||||
    # 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
 | 
			
		||||
        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()
 | 
			
		||||
        add_compile_options(/Zi)
 | 
			
		||||
    endif()
 | 
			
		||||
 
 | 
			
		||||
@@ -20,7 +20,6 @@ size_t Event::GetManagerIndex(const Type type) const {
 | 
			
		||||
    default:
 | 
			
		||||
        UNREACHABLE();
 | 
			
		||||
    }
 | 
			
		||||
    return 3;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void Event::SetAudioEvent(const Type type, const bool signalled) {
 | 
			
		||||
 
 | 
			
		||||
@@ -191,8 +191,6 @@ if (MSVC)
 | 
			
		||||
    _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING
 | 
			
		||||
  )
 | 
			
		||||
  target_compile_options(common PRIVATE
 | 
			
		||||
    /W4
 | 
			
		||||
 | 
			
		||||
    /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
 | 
			
		||||
    /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 size_t num_pages = 1;
 | 
			
		||||
    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 + size - 1) & ~PhysicalMapAllowedMask) == 0, ResultInvalidAddress);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -160,8 +160,8 @@ u32 NvMap::PinHandle(NvMap::Handle::Id handle) {
 | 
			
		||||
        u32 address{};
 | 
			
		||||
        auto& smmu_allocator = host1x.Allocator();
 | 
			
		||||
        auto& smmu_memory_manager = host1x.MemoryManager();
 | 
			
		||||
        while (!(address =
 | 
			
		||||
                     smmu_allocator.Allocate(static_cast<u32>(handle_description->aligned_size)))) {
 | 
			
		||||
        while ((address = smmu_allocator.Allocate(
 | 
			
		||||
                    static_cast<u32>(handle_description->aligned_size))) == 0) {
 | 
			
		||||
            // Free handles until the allocation succeeds
 | 
			
		||||
            std::scoped_lock queueLock(unmap_queue_lock);
 | 
			
		||||
            if (auto freeHandleDesc{unmap_queue.front()}) {
 | 
			
		||||
 
 | 
			
		||||
@@ -477,7 +477,8 @@ public:
 | 
			
		||||
            return ResultInternalError;
 | 
			
		||||
        }
 | 
			
		||||
        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),
 | 
			
		||||
                                    static_cast<u8*>(some_cert->pbCertEncoded) +
 | 
			
		||||
                                        some_cert->cbCertEncoded);
 | 
			
		||||
 
 | 
			
		||||
@@ -368,9 +368,9 @@ int main(int argc, char** argv) {
 | 
			
		||||
    if (auto room = network.GetRoom().lock()) {
 | 
			
		||||
        AnnounceMultiplayerRoom::GameInfo preferred_game_info{.name = preferred_game,
 | 
			
		||||
                                                              .id = preferred_game_id};
 | 
			
		||||
        if (!room->Create(room_name, room_description, bind_address, port, password, max_members,
 | 
			
		||||
                          username, preferred_game_info, std::move(verify_backend), ban_list,
 | 
			
		||||
                          enable_yuzu_mods)) {
 | 
			
		||||
        if (!room->Create(room_name, room_description, bind_address, static_cast<u16>(port),
 | 
			
		||||
                          password, max_members, username, preferred_game_info,
 | 
			
		||||
                          std::move(verify_backend), ban_list, enable_yuzu_mods)) {
 | 
			
		||||
            LOG_INFO(Network, "Failed to create room: ");
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -37,8 +37,6 @@ add_library(input_common STATIC
 | 
			
		||||
 | 
			
		||||
if (MSVC)
 | 
			
		||||
    target_compile_options(input_common PRIVATE
 | 
			
		||||
        /W4
 | 
			
		||||
 | 
			
		||||
        /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
 | 
			
		||||
        /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
 | 
			
		||||
    do {
 | 
			
		||||
        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));
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -245,8 +245,6 @@ target_link_libraries(shader_recompiler PUBLIC common fmt::fmt sirit)
 | 
			
		||||
 | 
			
		||||
if (MSVC)
 | 
			
		||||
    target_compile_options(shader_recompiler PRIVATE
 | 
			
		||||
        /W4
 | 
			
		||||
 | 
			
		||||
        /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
 | 
			
		||||
        /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.
 | 
			
		||||
    {
 | 
			
		||||
        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);
 | 
			
		||||
        REQUIRE(count == 3U);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -194,7 +194,7 @@ QWidget* Widget::CreateRadioGroup(std::function<std::string()>& serializer,
 | 
			
		||||
        return group;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    const auto get_selected = [=]() -> u32 {
 | 
			
		||||
    const auto get_selected = [=]() -> int {
 | 
			
		||||
        for (const auto& [id, button] : radio_buttons) {
 | 
			
		||||
            if (button->isChecked()) {
 | 
			
		||||
                return id;
 | 
			
		||||
 
 | 
			
		||||
@@ -265,7 +265,7 @@ int main(int argc, char** argv) {
 | 
			
		||||
                password = match[2];
 | 
			
		||||
                address = match[3];
 | 
			
		||||
                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._\\- ]+$");
 | 
			
		||||
                if (!std::regex_match(nickname, nickname_re)) {
 | 
			
		||||
                    std::cout
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user