Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:hrauch
electron_enable-additional-archs
swiftshader-Half-Wstrict-aliasing.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File swiftshader-Half-Wstrict-aliasing.patch of Package electron_enable-additional-archs
--- 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)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor