summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Morph2022-02-05 11:29:44 -0500
committerGravatar Morph2022-02-05 13:56:20 -0500
commitf0340b8d22c8e2d9319726b8d90f9b3a3636882e (patch)
tree7a852a9e67ed22f8211f92eeda89bc56e5e979e0 /src
parentservice: Migrate to the new UUID implementation (diff)
downloadyuzu-f0340b8d22c8e2d9319726b8d90f9b3a3636882e.tar.gz
yuzu-f0340b8d22c8e2d9319726b8d90f9b3a3636882e.tar.xz
yuzu-f0340b8d22c8e2d9319726b8d90f9b3a3636882e.zip
hle: ipc_helpers: Ignore -Wclass-memaccess
This warning is triggered by GCC when copying into non-trivially default constructible types, as it uses the more restrictive std::is_trivial (which includes std::is_trivially_default_constructible) to determine whether memcpy is safe instead of std::is_trivially_copyable.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/ipc_helpers.h8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/hle/ipc_helpers.h b/src/core/hle/ipc_helpers.h
index cf204f570..026257115 100644
--- a/src/core/hle/ipc_helpers.h
+++ b/src/core/hle/ipc_helpers.h
@@ -404,6 +404,11 @@ inline s32 RequestParser::Pop() {
404 return static_cast<s32>(Pop<u32>()); 404 return static_cast<s32>(Pop<u32>());
405} 405}
406 406
407// Ignore the -Wclass-memaccess warning on memcpy for non-trivially default constructible objects.
408#if defined(__GNUC__)
409#pragma GCC diagnostic push
410#pragma GCC diagnostic ignored "-Wclass-memaccess"
411#endif
407template <typename T> 412template <typename T>
408void RequestParser::PopRaw(T& value) { 413void RequestParser::PopRaw(T& value) {
409 static_assert(std::is_trivially_copyable_v<T>, 414 static_assert(std::is_trivially_copyable_v<T>,
@@ -411,6 +416,9 @@ void RequestParser::PopRaw(T& value) {
411 std::memcpy(&value, cmdbuf + index, sizeof(T)); 416 std::memcpy(&value, cmdbuf + index, sizeof(T));
412 index += (sizeof(T) + 3) / 4; // round up to word length 417 index += (sizeof(T) + 3) / 4; // round up to word length
413} 418}
419#if defined(__GNUC__)
420#pragma GCC diagnostic pop
421#endif
414 422
415template <typename T> 423template <typename T>
416T RequestParser::PopRaw() { 424T RequestParser::PopRaw() {