From 1bd246d2d31cee65b867d93ff82993cec8f012cb Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 30 May 2026 22:22:59 +0200 Subject: [PATCH] Fix some gcc warnings --- rpcs3/Emu/CPU/Backends/AArch64/AArch64Signal.cpp | 2 +- rpcs3/Emu/CPU/sse2neon.h | 2 ++ rpcs3/Emu/Memory/vm_ptr.h | 2 +- rpcs3/Emu/RSX/Overlays/overlay_edit_text.cpp | 5 ++++- rpcs3/Emu/RSX/Overlays/overlay_fonts.cpp | 5 +---- rpcs3/Emu/RSX/Overlays/overlay_fonts.h | 2 +- rpcs3/Emu/RSX/Program/Assembler/FPASM.cpp | 2 +- rpcs3/Loader/ISO.cpp | 6 +++--- rpcs3/gamemode_control.cpp | 3 +++ rpcs3/tests/test_simple_array.cpp | 6 +++++- 10 files changed, 22 insertions(+), 13 deletions(-) diff --git a/rpcs3/Emu/CPU/Backends/AArch64/AArch64Signal.cpp b/rpcs3/Emu/CPU/Backends/AArch64/AArch64Signal.cpp index 48b651d1a3..6b411e8111 100644 --- a/rpcs3/Emu/CPU/Backends/AArch64/AArch64Signal.cpp +++ b/rpcs3/Emu/CPU/Backends/AArch64/AArch64Signal.cpp @@ -39,7 +39,7 @@ namespace aarch64 if (head->magic == ESR_CTX_MAGIC) { - return reinterpret_cast(head); + return utils::bless(head); } offset += head->size; diff --git a/rpcs3/Emu/CPU/sse2neon.h b/rpcs3/Emu/CPU/sse2neon.h index dfb0b1a0e1..c4436b491b 100644 --- a/rpcs3/Emu/CPU/sse2neon.h +++ b/rpcs3/Emu/CPU/sse2neon.h @@ -81,6 +81,8 @@ #if defined(__GNUC__) || defined(__clang__) #pragma push_macro("FORCE_INLINE") #pragma push_macro("ALIGN_STRUCT") +#undef FORCE_INLINE +#undef ALIGN_STRUCT #define FORCE_INLINE static inline __attribute__((always_inline)) #define ALIGN_STRUCT(x) __attribute__((aligned(x))) #define _sse2neon_likely(x) __builtin_expect(!!(x), 1) diff --git a/rpcs3/Emu/Memory/vm_ptr.h b/rpcs3/Emu/Memory/vm_ptr.h index 4e87a9a6f7..0e98b47f3b 100644 --- a/rpcs3/Emu/Memory/vm_ptr.h +++ b/rpcs3/Emu/Memory/vm_ptr.h @@ -336,7 +336,7 @@ namespace vm // Perform reinterpret cast template - requires requires(T* t) { reinterpret_cast*>(t); } + requires std::is_object_v && std::is_object_v> inline _ptr_base, u32> unsafe_ptr_cast(const _ptr_base& other) { return vm::cast(other.addr()); diff --git a/rpcs3/Emu/RSX/Overlays/overlay_edit_text.cpp b/rpcs3/Emu/RSX/Overlays/overlay_edit_text.cpp index 4fad1f65e9..2eef26440b 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_edit_text.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_edit_text.cpp @@ -199,7 +199,10 @@ namespace rsx if (!is_compiled()) { auto renderer = get_font(); - const auto& [caret_x, caret_y] = renderer->get_char_offset(text.c_str(), caret_position, clip_text ? w : -1, wrap_text); + + f32 caret_x {}; + f32 caret_y {}; + renderer->get_char_offset(caret_x, caret_y, text.c_str(), caret_position, clip_text ? w : -1, wrap_text); overlay_element caret; caret.set_pos(static_cast(caret_x) + padding_left + x, static_cast(caret_y) + padding_top + y); diff --git a/rpcs3/Emu/RSX/Overlays/overlay_fonts.cpp b/rpcs3/Emu/RSX/Overlays/overlay_fonts.cpp index 91ef3f13d9..f6bb10a385 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_fonts.cpp +++ b/rpcs3/Emu/RSX/Overlays/overlay_fonts.cpp @@ -457,12 +457,9 @@ namespace rsx return render_text_ex(unused_x, unused_y, text, -1, max_width, wrap); } - std::pair font::get_char_offset(const char32_t* text, usz max_length, u16 max_width, bool wrap) + void font::get_char_offset(f32& loc_x, f32& loc_y, const char32_t* text, usz max_length, u16 max_width, bool wrap) { - f32 loc_x, loc_y; - render_text_ex(loc_x, loc_y, text, max_length, max_width, wrap); - return {loc_x, loc_y}; } const std::vector& font::get_glyph_data() const diff --git a/rpcs3/Emu/RSX/Overlays/overlay_fonts.h b/rpcs3/Emu/RSX/Overlays/overlay_fonts.h index a296aad81f..8bdd3df5ce 100644 --- a/rpcs3/Emu/RSX/Overlays/overlay_fonts.h +++ b/rpcs3/Emu/RSX/Overlays/overlay_fonts.h @@ -78,7 +78,7 @@ namespace rsx std::vector render_text(const char32_t* text, u16 max_width = -1, bool wrap = false); - std::pair get_char_offset(const char32_t* text, usz max_length, u16 max_width = -1, bool wrap = false); + void get_char_offset(f32& loc_x, f32& loc_y, const char32_t* text, usz max_length, u16 max_width = -1, bool wrap = false); bool matches(std::string_view name, int size) const { return static_cast(size_pt) == size && font_name == name; } std::string_view get_name() const { return font_name; } diff --git a/rpcs3/Emu/RSX/Program/Assembler/FPASM.cpp b/rpcs3/Emu/RSX/Program/Assembler/FPASM.cpp index 2d74fafc73..991651d739 100644 --- a/rpcs3/Emu/RSX/Program/Assembler/FPASM.cpp +++ b/rpcs3/Emu/RSX/Program/Assembler/FPASM.cpp @@ -171,7 +171,7 @@ namespace rsx::assembler for (const auto& inst : m_instructions) { - const auto src = reinterpret_cast*>(inst.bytecode); + const auto src = utils::bless>(&inst.bytecode[0]); for (u32 j = 0; j < inst.length; ++j) { const u16 low = src[j * 2]; diff --git a/rpcs3/Loader/ISO.cpp b/rpcs3/Loader/ISO.cpp index 4b7ee5141f..96d196d670 100644 --- a/rpcs3/Loader/ISO.cpp +++ b/rpcs3/Loader/ISO.cpp @@ -859,14 +859,14 @@ static std::optional iso_read_directory_entry(fs::file& entry, else if (names_in_ucs2) // For strings in joliet descriptor { // Characters are stored in big endian format - const u16* raw = reinterpret_cast(file_name.data()); + const be_t* raw = utils::bless>(file_name.data()); std::u16string utf16; utf16.resize(header.file_name_length / 2); - for (usz i = 0; i < utf16.size(); i++, raw++) + for (usz i = 0; i < utf16.size(); i++) { - utf16[i] = *reinterpret_cast*>(raw); + utf16[i] = raw[i]; } file_name = utf16_to_utf8(utf16); diff --git a/rpcs3/gamemode_control.cpp b/rpcs3/gamemode_control.cpp index 3879ebaccf..79d5ac4611 100644 --- a/rpcs3/gamemode_control.cpp +++ b/rpcs3/gamemode_control.cpp @@ -1,10 +1,13 @@ #include "gamemode_control.h" #ifdef GAMEMODE_AVAILABLE +#pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wold-style-cast" +#pragma GCC diagnostic ignored "-Wstrict-aliasing" extern "C" { #include "3rdparty/feralinteractive/feralinteractive/lib/gamemode_client.h" } +#pragma GCC diagnostic pop #endif // Enables and Disables GameMode based on user settings and system diff --git a/rpcs3/tests/test_simple_array.cpp b/rpcs3/tests/test_simple_array.cpp index 0222b4fd0d..bbf96cef54 100644 --- a/rpcs3/tests/test_simple_array.cpp +++ b/rpcs3/tests/test_simple_array.cpp @@ -418,8 +418,12 @@ namespace rsx { auto ptr = rsx::aligned_allocator::malloc<256>(16); auto ptr2 = rsx::aligned_allocator::realloc<256>(ptr, 16, 8); + + const auto ptr_value = reinterpret_cast(ptr); + const auto ptr2_value = reinterpret_cast(ptr2); + rsx::aligned_allocator::free(ptr2); - EXPECT_EQ(ptr, ptr2); + EXPECT_EQ(ptr_value, ptr2_value); } }