Mesa (master): glsl/tests: Fix strict aliasing warning about int64/double.
Eric Anholt
anholt at kemper.freedesktop.org
Mon Feb 12 20:49:36 UTC 2018
Module: Mesa
Branch: master
Commit: 21670f820812238dbe3fb18ab90493999b7e718e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=21670f820812238dbe3fb18ab90493999b7e718e
Author: Eric Anholt <eric at anholt.net>
Date: Sat Feb 10 11:01:20 2018 +0000
glsl/tests: Fix strict aliasing warning about int64/double.
Fixes: 4bf986274728 ("glsl/tests: Add UINT64 and INT64 types")
Reviewed-by: Rhys Kidd <rhyskidd at gmail.com>
---
.../glsl/tests/uniform_initializer_utils.cpp | 22 +++++++++++++++++++---
1 file changed, 19 insertions(+), 3 deletions(-)
diff --git a/src/compiler/glsl/tests/uniform_initializer_utils.cpp b/src/compiler/glsl/tests/uniform_initializer_utils.cpp
index c5502b6326..a1c68c8272 100644
--- a/src/compiler/glsl/tests/uniform_initializer_utils.cpp
+++ b/src/compiler/glsl/tests/uniform_initializer_utils.cpp
@@ -198,6 +198,22 @@ generate_array_data(void *mem_ctx, enum glsl_base_type base_type,
val = new(mem_ctx) ir_constant(array_type, &values_for_array);
}
+static uint64_t
+uint64_storage(union gl_constant_value *storage)
+{
+ uint64_t val;
+ memcpy(&val, &storage->i, sizeof(uint64_t));
+ return val;
+}
+
+static uint64_t
+double_storage(union gl_constant_value *storage)
+{
+ double val;
+ memcpy(&val, &storage->i, sizeof(double));
+ return val;
+}
+
/**
* Verify that the data stored for the uniform matches the initializer
*
@@ -246,13 +262,13 @@ verify_data(gl_constant_value *storage, unsigned storage_array_size,
EXPECT_EQ(val->value.b[i] ? boolean_true : 0, storage[i].i);
break;
case GLSL_TYPE_DOUBLE:
- EXPECT_EQ(val->value.d[i], *(double *)&storage[i*2].i);
+ EXPECT_EQ(val->value.d[i], double_storage(&storage[i*2]));
break;
case GLSL_TYPE_UINT64:
- EXPECT_EQ(val->value.u64[i], *(uint64_t *)&storage[i*2].i);
+ EXPECT_EQ(val->value.u64[i], uint64_storage(&storage[i*2]));
break;
case GLSL_TYPE_INT64:
- EXPECT_EQ(val->value.i64[i], *(int64_t *)&storage[i*2].i);
+ EXPECT_EQ(val->value.i64[i], uint64_storage(&storage[i*2]));
break;
case GLSL_TYPE_ATOMIC_UINT:
case GLSL_TYPE_STRUCT:
More information about the mesa-commit
mailing list