Spam detection software, running on the system "mix.hive.no", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: I recently found a .. weird bug on Win32 SSE with GCC 4.2.1. In libspeex/cb_search_sse.h, the following union is used: union { float __a[4]; __m128 __v; } __u; [...] Content analysis details: (4.0 points, 3.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 BAYES_50 BODY: Bayesian spam probability is 40 to 60% [score: 0.4553] 2.0 RCVD_IN_SORBS_DUL RBL: SORBS: sent directly from dynamic IP address [80.203.120.190 listed in dnsbl.sorbs.net] 1.9 RCVD_IN_NJABL_DUL RBL: NJABL: dialup sender did non-local SMTP [80.203.120.190 listed in combined.njabl.org] -------------- next part -------------- An embedded message was scrubbed... From: Thorvald Natvig <speex@natvig.com> Subject: SSE bug on Win32 with GCC 4.2.1 Date: Mon, 20 Aug 2007 18:09:46 +0200 Size: 1229 Url: http://lists.xiph.org/pipermail/speex-dev/attachments/20070820/6dcba083/attachment.mht
> Content analysis details: (4.0 points, 3.0 required)Gah, that's what you get from trying out new fancy mailing software. Just ignore that. Never happened ;)
> I recently found a .. weird bug on Win32 SSE with GCC 4.2.1. > > In libspeex/cb_search_sse.h, the following union is used: > > union { > float __a[4]; > __m128 __v; > } __u; > > For some odd reason, this particular version of GCC will not 16-byte > align the union. IE; the alignment requirement of __v isn't propagated. > Changing it into this: > > union { > float __a[4]; > __m128 __v; > } __u __attribute__((aligned(16))); > > And it works again. This is definitely a GCC bug, but I thought I'd > mention it here in case others have similar problems.That's, euh... "interesting". Did you submit a bug report to the gcc team? I guess I could add your code as a workaround (do you know what version started supporting that attribute?) until it's fixed. I just find it amazing how many bugs in gcc Speex has managed to trigger. I believe this is at least the third one related to SSE (one in 3.4, one in 4.1). Jean-Marc
Jean-Marc Valin wrote:>> I recently found a .. weird bug on Win32 SSE with GCC 4.2.1. >> >> In libspeex/cb_search_sse.h, the following union is used: >> >> union { >> float __a[4]; >> __m128 __v; >> } __u; >> >> For some odd reason, this particular version of GCC will not 16-byte >> align the union. IE; the alignment requirement of __v isn't propagated. >> Changing it into this: >> >> union { >> float __a[4]; >> __m128 __v; >> } __u __attribute__((aligned(16))); >> >> And it works again. This is definitely a GCC bug, but I thought I'd >> mention it here in case others have similar problems. > > That's, euh... "interesting". Did you submit a bug report to the gcc > team? I guess I could add your code as a workaround (do you know what > version started supporting that attribute?) until it's fixed. I just > find it amazing how many bugs in gcc Speex has managed to trigger. I > believe this is at least the third one related to SSE (one in 3.4, one > in 4.1). > > Jean-MarcIt's supported on at least GCC 3.2, but it is very GCC specific and breaks horribly with any other compiler. However, I think this might be "local" to the windows versions of gcc 4.2. I'll install GCC on a few more platforms and try to verify it.