<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.32.2">
</HEAD>
<BODY>
On Mon, 2011-12-05 at 10:37 +1000, Peter Hutterer wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
Compiler warning:
xinput.c:272: warning: dereferencing pointer 'e' does break strict-aliasing
rules

The code itself is the usual XInput client-side code:
        XEvent event;
        XDeviceMotionEvent *e = (XDeviceMotionEvent *)&amp;event;
        XNextEvent(display, &amp;event);
        printf(&quot;%d\n&quot;, e-&gt;type);

Since XDeviceMotionEvent is not guaranteed the same size as XEvent, clients
must use pointer aliasing as above when using the XNextEvent API. Disable
strict aliasing for this example.

Signed-off-by: Peter Hutterer &lt;<A HREF="mailto:peter.hutterer@who-t.net">peter.hutterer@who-t.net</A>&gt;
---
If I understand this correctly, this is endemic to virtually any XI
application. Point could be made to disable strict aliasing for the whole
examples directory here instead of just the xinput example here but none of
the others complain as of yet.

 configure.ac |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/configure.ac b/configure.ac
index d2aaeb1..3443583 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1968,6 +1968,7 @@ dnl Linux sources in DMX require &lt;linux/keyboard.h&gt;
         AC_SUBST(DMXXMUEXAMPLES_DEP_LIBS)
         PKG_CHECK_MODULES([DMXXIEXAMPLES_DEP], [$LIBDMX $LIBXI $LIBXEXT x11])
         AC_SUBST(DMXXIEXAMPLES_DEP_LIBS)
+        DMXXIEXAMPLES_DEP_CFLAGS+=&quot;-fno-strict-aliasing&quot;
</PRE>
</BLOCKQUOTE>
Shouldn't this be similar to line 93 above?
<BLOCKQUOTE>
<PRE>
if&nbsp; test &quot;x$GCC&quot; = xyes ; then
&nbsp;&nbsp;&nbsp; XSERVER_CFLAGS=&quot;$XSERVER_CFLAGS -fno-strict-aliasing&quot;
fi
</PRE>
</BLOCKQUOTE>
One cannot presume that only gcc will ever compile this code, unless I missed some equivalent test somewhere.<BR>
<BR>
I don't get any warning in my build output and I don't see any -W option (patch not applied):<BR>
<BR>
<TT>gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../../../include&nbsp;&nbsp;&nbsp; -I/home/nadon/xorg/src/inst/include&nbsp;&nbsp; -g -O2 -MT xinput-xinput.o -MD -MP -MF .deps/xinput-xinput.Tpo -c -o xinput-xinput.o `test -f 'xinput.c' || echo './'`xinput.c</TT><BR>
<BR>
<BR>
<BLOCKQUOTE TYPE=CITE>
<PRE>
         PKG_CHECK_MODULES([XTSTEXAMPLES_DEP], [$LIBXTST $LIBXEXT x11])
         AC_SUBST(XTSTEXAMPLES_DEP_LIBS)
         PKG_CHECK_MODULES([XRESEXAMPLES_DEP], [xres $LIBXEXT x11])
</PRE>
</BLOCKQUOTE>
<BR>
</BODY>
</HTML>