Mesa (main): microsoft/compiler: Use memcpy instead of a union to write dxil_features
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Tue Oct 26 20:40:00 UTC 2021
Module: Mesa
Branch: main
Commit: 7e26ea84da94a8157808f391c9849ae4a1c52cc8
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=7e26ea84da94a8157808f391c9849ae4a1c52cc8
Author: Michael Tang <tangm at microsoft.com>
Date: Fri Oct 22 16:03:11 2021 -0700
microsoft/compiler: Use memcpy instead of a union to write dxil_features
Reviewed-by: Jesse Natalie <jenatali at microsoft.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13496>
---
src/microsoft/compiler/dxil_container.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/microsoft/compiler/dxil_container.c b/src/microsoft/compiler/dxil_container.c
index e8373fb93ab..2e2c44558cb 100644
--- a/src/microsoft/compiler/dxil_container.c
+++ b/src/microsoft/compiler/dxil_container.c
@@ -72,11 +72,12 @@ bool
dxil_container_add_features(struct dxil_container *c,
const struct dxil_features *features)
{
- union {
- struct dxil_features flags;
- uint64_t bits;
- } u = { .flags = *features };
- return add_part(c, DXIL_SFI0, &u.bits, sizeof(u.bits));
+ /* DXIL feature info is a bitfield packed into a uint64_t. */
+ static_assert(sizeof(struct dxil_features) <= sizeof(uint64_t),
+ "Expected dxil_features to fit into a uint64_t");
+ uint64_t bits = 0;
+ memcpy(&bits, features, sizeof(struct dxil_features));
+ return add_part(c, DXIL_SFI0, &bits, sizeof(uint64_t));
}
typedef struct {
More information about the mesa-commit
mailing list