<!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 13:51 +1000, Peter Hutterer wrote:
<BLOCKQUOTE TYPE=CITE>
<PRE>
On Sun, Dec 04, 2011 at 09:16:41PM -0500, Gaetan Nadon wrote:
&gt; On Mon, 2011-12-05 at 10:37 +1000, Peter Hutterer wrote:
&gt; 
&gt; &gt; Compiler warning:
&gt; &gt; xinput.c:272: warning: dereferencing pointer 'e' does break strict-aliasing
&gt; &gt; rules
&gt; &gt; 
&gt; &gt; The code itself is the usual XInput client-side code:
&gt; &gt;         XEvent event;
&gt; &gt;         XDeviceMotionEvent *e = (XDeviceMotionEvent *)&amp;event;
&gt; &gt;         XNextEvent(display, &amp;event);
&gt; &gt;         printf(&quot;%d\n&quot;, e-&gt;type);
&gt; &gt; 
&gt; &gt; Since XDeviceMotionEvent is not guaranteed the same size as XEvent, clients
&gt; &gt; must use pointer aliasing as above when using the XNextEvent API. Disable
&gt; &gt; strict aliasing for this example.
&gt; &gt; 
&gt; &gt; Signed-off-by: Peter Hutterer &lt;<A HREF="mailto:peter.hutterer@who-t.net">peter.hutterer@who-t.net</A>&gt;
&gt; &gt; ---
&gt; &gt; If I understand this correctly, this is endemic to virtually any XI
&gt; &gt; application. Point could be made to disable strict aliasing for the whole
&gt; &gt; examples directory here instead of just the xinput example here but none of
&gt; &gt; the others complain as of yet.
&gt; &gt; 
&gt; &gt;  configure.ac |    1 +
&gt; &gt;  1 files changed, 1 insertions(+), 0 deletions(-)
&gt; &gt; 
&gt; &gt; diff --git a/configure.ac b/configure.ac
&gt; &gt; index d2aaeb1..3443583 100644
&gt; &gt; --- a/configure.ac
&gt; &gt; +++ b/configure.ac
&gt; &gt; @@ -1968,6 +1968,7 @@ dnl Linux sources in DMX require &lt;linux/keyboard.h&gt;
&gt; &gt;          AC_SUBST(DMXXMUEXAMPLES_DEP_LIBS)
&gt; &gt;          PKG_CHECK_MODULES([DMXXIEXAMPLES_DEP], [$LIBDMX $LIBXI $LIBXEXT x11])
&gt; &gt;          AC_SUBST(DMXXIEXAMPLES_DEP_LIBS)
&gt; &gt; +        DMXXIEXAMPLES_DEP_CFLAGS+=&quot;-fno-strict-aliasing&quot;
&gt; 
&gt; Shouldn't this be similar to line 93 above?
&gt; 
&gt;         if  test &quot;x$GCC&quot; = xyes ; then
&gt;             XSERVER_CFLAGS=&quot;$XSERVER_CFLAGS -fno-strict-aliasing&quot;
&gt;         fi
&gt; 
&gt; One cannot presume that only gcc will ever compile this code, unless I
&gt; missed some equivalent test somewhere.

right, of course. I'll fix that up.

&gt; I don't get any warning in my build output and I don't see any -W option
&gt; (patch not applied):
&gt; 
&gt; gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../../../include
&gt; -I/home/nadon/xorg/src/inst/include   -g -O2 -MT xinput-xinput.o -MD -MP
&gt; -MF .deps/xinput-xinput.Tpo -c -o xinput-xinput.o `test -f 'xinput.c' ||
&gt; echo './'`xinput.c

tbh, I'm not 100% what other conditions need to be true here. I can't
reproduce it on my machine but on our build-systems it produces the above
warning without this fix.
</PRE>
</BLOCKQUOTE>
Most likely they add warning compiler options on the build machine. Consider adding $(CWARNFLAGS) in the makefile. I was somewhat surprised to see it was missing. <BR>
You may want to wait until util-macros v 1.16 where Jeremy reorged the warning flags and separated them from fno-strict-aliasing which will fit nicely with this patch.
<BLOCKQUOTE TYPE=CITE>
<PRE>

Cheers,
  Peter

&gt; &gt;          PKG_CHECK_MODULES([XTSTEXAMPLES_DEP], [$LIBXTST $LIBXEXT x11])
&gt; &gt;          AC_SUBST(XTSTEXAMPLES_DEP_LIBS)
&gt; &gt;          PKG_CHECK_MODULES([XRESEXAMPLES_DEP], [xres $LIBXEXT x11])
&gt; 
&gt; 


</PRE>
</BLOCKQUOTE>
<BR>
</BODY>
</HTML>