Mesa (master): r300g: Avoid aliasing violation.

Matt Turner mattst88 at kemper.freedesktop.org
Mon Aug 1 19:08:55 UTC 2016


Module: Mesa
Branch: master
Commit: d2838f77ec9149149a2c87f8bd547239e1560a70
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=d2838f77ec9149149a2c87f8bd547239e1560a70

Author: Matt Turner <mattst88 at gmail.com>
Date:   Thu Jul 28 13:57:06 2016 -0700

r300g: Avoid aliasing violation.

Reviewed-by: Marek Olšák <marek.olsak at amd.com>

---

 src/gallium/drivers/r300/compiler/radeon_inline_literals.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/r300/compiler/radeon_inline_literals.c b/src/gallium/drivers/r300/compiler/radeon_inline_literals.c
index 492f00e..c40a380 100644
--- a/src/gallium/drivers/r300/compiler/radeon_inline_literals.c
+++ b/src/gallium/drivers/r300/compiler/radeon_inline_literals.c
@@ -28,6 +28,7 @@
 #include "radeon_dataflow.h"
 #include "radeon_program.h"
 #include "radeon_program_constants.h"
+#include "util/u_bitcast.h"
 #include <stdio.h>
 
 #define VERBOSE 0
@@ -45,7 +46,7 @@
  */
 static int ieee_754_to_r300_float(float f, unsigned char *r300_float_out)
 {
-	unsigned float_bits = *((unsigned *)&f);
+	unsigned float_bits = u_bitcast_f2u(f);
 	/* XXX: Handle big-endian */
 	unsigned mantissa = float_bits &         0x007fffff;
 	unsigned biased_exponent = (float_bits & 0x7f800000) >> 23;




More information about the mesa-commit mailing list