From 5e75a0c4978066b90a681c206b5080e8662ce71e Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Fri, 21 Feb 2020 15:39:40 +0300 Subject: [PATCH] Disable cotire on travis Make some workarounds for clang because it poorly supports -Wold-style-cast --- .travis/build-linux.bash | 2 +- rpcs3/Emu/Audio/FAudio/FAudioBackend.cpp | 1 + rpcs3/Emu/Cell/PPUInterpreter.cpp | 5 ++++ rpcs3/Emu/Cell/SPUInterpreter.cpp | 10 ++++++++ rpcs3/Emu/Cell/lv2/sys_net.cpp | 30 ++++++++++++------------ rpcs3/Emu/RSX/Common/BufferUtils.cpp | 5 ++++ 6 files changed, 37 insertions(+), 16 deletions(-) diff --git a/.travis/build-linux.bash b/.travis/build-linux.bash index c07a4bfd30..19669fe2b5 100644 --- a/.travis/build-linux.bash +++ b/.travis/build-linux.bash @@ -26,7 +26,7 @@ else export CXX=${CLANGXX_BINARY} fi -cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_LLVM_SUBMODULE=OFF -DLLVM_DIR=llvmlibs/lib/cmake/llvm/ -DUSE_NATIVE_INSTRUCTIONS=OFF -G Ninja +cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DBUILD_LLVM_SUBMODULE=OFF -DUSE_COTIRE=OFF -DLLVM_DIR=llvmlibs/lib/cmake/llvm/ -DUSE_NATIVE_INSTRUCTIONS=OFF -G Ninja ninja; build_status=$?; diff --git a/rpcs3/Emu/Audio/FAudio/FAudioBackend.cpp b/rpcs3/Emu/Audio/FAudio/FAudioBackend.cpp index a9c914d006..770498fc25 100644 --- a/rpcs3/Emu/Audio/FAudio/FAudioBackend.cpp +++ b/rpcs3/Emu/Audio/FAudio/FAudioBackend.cpp @@ -2,6 +2,7 @@ #error "FAudio support disabled but still being built." #endif +#include "stdafx.h" #include "FAudioBackend.h" #include "Emu/system_config.h" #include "Emu/System.h" diff --git a/rpcs3/Emu/Cell/PPUInterpreter.cpp b/rpcs3/Emu/Cell/PPUInterpreter.cpp index 0a0ca1af66..7ca5ed354e 100644 --- a/rpcs3/Emu/Cell/PPUInterpreter.cpp +++ b/rpcs3/Emu/Cell/PPUInterpreter.cpp @@ -10,6 +10,11 @@ #include #include +#if !defined(_MSC_VER) && defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wold-style-cast" +#endif + #if defined(_MSC_VER) #define SSSE3_FUNC #else diff --git a/rpcs3/Emu/Cell/SPUInterpreter.cpp b/rpcs3/Emu/Cell/SPUInterpreter.cpp index 7621c04fb2..7004a5ab63 100644 --- a/rpcs3/Emu/Cell/SPUInterpreter.cpp +++ b/rpcs3/Emu/Cell/SPUInterpreter.cpp @@ -10,6 +10,11 @@ #include #include +#if !defined(_MSC_VER) && defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wold-style-cast" +#endif + // Compare 16 packed unsigned bytes (greater than) inline __m128i sse_cmpgt_epu8(__m128i A, __m128i B) { @@ -550,6 +555,11 @@ bool spu_interpreter::GBB(spu_thread& spu, spu_opcode_t op) return true; } +#ifndef _MSC_VER +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wold-style-cast" +#endif + bool spu_interpreter::FSM(spu_thread& spu, spu_opcode_t op) { const auto bits = _mm_shuffle_epi32(spu.gpr[op.ra].vi, 0xff); diff --git a/rpcs3/Emu/Cell/lv2/sys_net.cpp b/rpcs3/Emu/Cell/lv2/sys_net.cpp index c23cde426b..09d6e697fb 100644 --- a/rpcs3/Emu/Cell/lv2/sys_net.cpp +++ b/rpcs3/Emu/Cell/lv2/sys_net.cpp @@ -476,8 +476,8 @@ error_code sys_net_bnet_accept(ppu_thread& ppu, s32 s, vm::ptr paddr->sin_len = sizeof(sys_net_sockaddr_in); paddr->sin_family = SYS_NET_AF_INET; - paddr->sin_port = ntohs(reinterpret_cast(&native_addr)->sin_port); - paddr->sin_addr = ntohl(reinterpret_cast(&native_addr)->sin_addr.s_addr); + paddr->sin_port = std::bit_cast, u16>(reinterpret_cast(&native_addr)->sin_port); + paddr->sin_addr = std::bit_cast, u32>(reinterpret_cast(&native_addr)->sin_addr.s_addr); paddr->sin_zero = 0; } @@ -501,8 +501,8 @@ error_code sys_net_bnet_bind(ppu_thread& ppu, s32 s, vm::cptr ::sockaddr_in name{}; name.sin_family = AF_INET; - name.sin_port = htons(psa_in->sin_port); - name.sin_addr.s_addr = htonl(psa_in->sin_addr); + name.sin_port = std::bit_cast(psa_in->sin_port); + name.sin_addr.s_addr = std::bit_cast(psa_in->sin_addr); ::socklen_t namelen = sizeof(name); const auto sock = idm::check(s, [&](lv2_socket& sock) -> sys_net_error @@ -541,8 +541,8 @@ error_code sys_net_bnet_connect(ppu_thread& ppu, s32 s, vm::ptrsin_port); - name.sin_addr.s_addr = htonl(psa_in->sin_addr); + name.sin_port = std::bit_cast(psa_in->sin_port); + name.sin_addr.s_addr = std::bit_cast(psa_in->sin_addr); ::socklen_t namelen = sizeof(name); const auto sock = idm::check(s, [&](lv2_socket& sock) @@ -552,7 +552,7 @@ error_code sys_net_bnet_connect(ppu_thread& ppu, s32 s, vm::ptrsa_family == 0 && !psa_in->sin_port && !psa_in->sin_addr) { // Hack for DNS (8.8.8.8:53) - name.sin_port = htons(53); + name.sin_port = std::bit_cast>(53); name.sin_addr.s_addr = 0x08080808; // Overwrite arg (probably used to validate recvfrom addr) @@ -714,8 +714,8 @@ error_code sys_net_bnet_getpeername(ppu_thread& ppu, s32 s, vm::ptrsin_len = sizeof(sys_net_sockaddr_in); paddr->sin_family = SYS_NET_AF_INET; - paddr->sin_port = ntohs(reinterpret_cast(&native_addr)->sin_port); - paddr->sin_addr = ntohl(reinterpret_cast(&native_addr)->sin_addr.s_addr); + paddr->sin_port = std::bit_cast, u16>(reinterpret_cast(&native_addr)->sin_port); + paddr->sin_addr = std::bit_cast, u32>(reinterpret_cast(&native_addr)->sin_addr.s_addr); paddr->sin_zero = 0; return {}; } @@ -762,8 +762,8 @@ error_code sys_net_bnet_getsockname(ppu_thread& ppu, s32 s, vm::ptrsin_len = sizeof(sys_net_sockaddr_in); paddr->sin_family = SYS_NET_AF_INET; - paddr->sin_port = ntohs(reinterpret_cast(&native_addr)->sin_port); - paddr->sin_addr = ntohl(reinterpret_cast(&native_addr)->sin_addr.s_addr); + paddr->sin_port = std::bit_cast, u16>(reinterpret_cast(&native_addr)->sin_port); + paddr->sin_addr = std::bit_cast, u32>(reinterpret_cast(&native_addr)->sin_addr.s_addr); paddr->sin_zero = 0; return {}; } @@ -1138,8 +1138,8 @@ error_code sys_net_bnet_recvfrom(ppu_thread& ppu, s32 s, vm::ptr buf, u32 paddr->sin_len = sizeof(sys_net_sockaddr_in); paddr->sin_family = SYS_NET_AF_INET; - paddr->sin_port = ntohs(reinterpret_cast(&native_addr)->sin_port); - paddr->sin_addr = ntohl(reinterpret_cast(&native_addr)->sin_addr.s_addr); + paddr->sin_port = std::bit_cast, u16>(reinterpret_cast(&native_addr)->sin_port); + paddr->sin_addr = std::bit_cast, u32>(reinterpret_cast(&native_addr)->sin_addr.s_addr); paddr->sin_zero = 0; } @@ -1195,8 +1195,8 @@ error_code sys_net_bnet_sendto(ppu_thread& ppu, s32 s, vm::cptr buf, u32 l if (addr) { name.sin_family = AF_INET; - name.sin_port = htons(psa_in->sin_port); - name.sin_addr.s_addr = htonl(psa_in->sin_addr); + name.sin_port = std::bit_cast(psa_in->sin_port); + name.sin_addr.s_addr = std::bit_cast(psa_in->sin_addr); } ::socklen_t namelen = sizeof(name); diff --git a/rpcs3/Emu/RSX/Common/BufferUtils.cpp b/rpcs3/Emu/RSX/Common/BufferUtils.cpp index 1ad5437379..4294fe9235 100644 --- a/rpcs3/Emu/RSX/Common/BufferUtils.cpp +++ b/rpcs3/Emu/RSX/Common/BufferUtils.cpp @@ -8,6 +8,11 @@ #define DEBUG_VERTEX_STREAMING 0 +#if !defined(_MSC_VER) && defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wold-style-cast" +#endif + #if defined(_MSC_VER) #define SSSE3_FUNC #define SSE4_1_FUNC