Actually, it might just be an OS "feature"..  On most linux and mac platforms, the memory managers align memory on proper boundaries -- this doesn't occur on most versions of windows.  I don't have all the code in front of me, but it's possible that it's simply a side effect of windows not aligning the memory, and an implicit assumption in the speex code that it will have proper alignment.
<br><br><br><div><span class="gmail_quote">On 8/20/07, <b class="gmail_sendername">Thorvald Natvig</b> &lt;<a href="mailto:speex@natvig.com">speex@natvig.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Jean-Marc Valin wrote:<br>&gt;&gt; I recently found a .. weird bug on Win32 SSE with GCC 4.2.1.<br>&gt;&gt;<br>&gt;&gt; In libspeex/cb_search_sse.h, the following union is used:<br>&gt;&gt;<br>&gt;&gt; union {<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;float __a[4];
<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;__m128 __v;<br>&gt;&gt;&nbsp;&nbsp;} __u;<br>&gt;&gt;<br>&gt;&gt; For some odd reason, this particular version of GCC will not 16-byte<br>&gt;&gt; align the union. IE; the alignment requirement of __v isn&#39;t propagated.
<br>&gt;&gt; Changing it into this:<br>&gt;&gt;<br>&gt;&gt;&nbsp;&nbsp;union {<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;float __a[4];<br>&gt;&gt;&nbsp;&nbsp;&nbsp;&nbsp;__m128 __v;<br>&gt;&gt;&nbsp;&nbsp;} __u __attribute__((aligned(16)));<br>&gt;&gt;<br>&gt;&gt; And it works again. This is definitely a GCC bug, but I thought I&#39;d
<br>&gt;&gt; mention it here in case others have similar problems.<br>&gt;<br>&gt; That&#39;s, euh... &quot;interesting&quot;. Did you submit a bug report to the gcc<br>&gt; team? I guess I could add your code as a workaround (do you know what
<br>&gt; version started supporting that attribute?) until it&#39;s fixed. I just<br>&gt; find it amazing how many bugs in gcc Speex has managed to trigger. I<br>&gt; believe this is at least the third one related to SSE (one in 
3.4, one<br>&gt; in 4.1).<br>&gt;<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Jean-Marc<br><br>It&#39;s supported on at least GCC 3.2, but it is very GCC specific and<br>breaks horribly with any other compiler.<br><br>However, I think this might be &quot;local&quot; to the windows versions of gcc
<br>4.2. I&#39;ll install GCC on a few more platforms and try to verify it.<br>_______________________________________________<br>Speex-dev mailing list<br><a href="mailto:Speex-dev@xiph.org">Speex-dev@xiph.org</a><br><a href="http://lists.xiph.org/mailman/listinfo/speex-dev">
http://lists.xiph.org/mailman/listinfo/speex-dev</a><br></blockquote></div><br>