File swiftshader-Half-Wstrict-aliasing.patch of Package nodejs-electron.v3

--- src/third_party/swiftshader/src/System/Half.hpp.orig	2022-10-12 18:07:57.859149000 +0200
+++ src/third_party/swiftshader/src/System/Half.hpp	2022-10-19 21:30:33.133940800 +0200
@@ -19,6 +19,7 @@
 
 #include <algorithm>
 #include <cmath>
+#include <cstring>
 
 namespace sw {
 
@@ -194,7 +195,8 @@
 		const unsigned int float32MinNormfloat11 = 0x38800000;
 		const unsigned int float32MinDenormfloat11 = 0x35000080;
 
-		const unsigned int float32Bits = *reinterpret_cast<unsigned int *>(&fp32);
+		unsigned int float32Bits;
+		std::memcpy(&float32Bits, &fp32, 4);
 		const bool float32Sign = (float32Bits & float32SignMask) == float32SignMask;
 
 		unsigned int float32Val = float32Bits & float32ValueMask;
@@ -273,7 +275,8 @@
 		const unsigned int float32MinNormfloat10 = 0x38800000;
 		const unsigned int float32MinDenormfloat10 = 0x35800040;
 
-		const unsigned int float32Bits = *reinterpret_cast<unsigned int *>(&fp32);
+		unsigned int float32Bits;
+		std::memcpy(&float32Bits, &fp32, 4);
 		const bool float32Sign = (float32Bits & float32SignMask) == float32SignMask;
 
 		unsigned int float32Val = float32Bits & float32ValueMask;
--- src/third_party/swiftshader/src/System/Half.cpp.orig	2022-10-12 18:07:57.859149000 +0200
+++ src/third_party/swiftshader/src/System/Half.cpp	2022-10-19 22:47:18.573634800 +0200
@@ -14,11 +14,14 @@
 
 #include "Half.hpp"
 
+#include <cstring>
+
 namespace sw {
 
 half::half(float fp32)
 {
-	unsigned int fp32i = *(unsigned int *)&fp32;
+	unsigned int fp32i;
+	std::memcpy(&fp32i, &fp32, 4);
 	unsigned int sign = (fp32i & 0x80000000) >> 16;
 	unsigned int abs = fp32i & 0x7FFFFFFF;
 
@@ -51,7 +54,7 @@
 half::operator float() const
 {
 	unsigned int fp32i;
-
+	float ret;
 	int s = (fp16i >> 15) & 0x00000001;
 	int e = (fp16i >> 10) & 0x0000001F;
 	int m = fp16i & 0x000003FF;
@@ -61,8 +64,8 @@
 		if(m == 0)
 		{
 			fp32i = s << 31;
-
-			return (float &)fp32i;
+			std::memcpy(&ret, &fp32i, 4);
+			return ret;
 		}
 		else
 		{
@@ -82,7 +85,8 @@
 
 	fp32i = (s << 31) | (e << 23) | m;
 
-	return (float &)fp32i;
+	std::memcpy(&ret, &fp32i, 4);
+	return ret;
 }
 
 half &half::operator=(float f)
openSUSE Build Service is sponsored by