Bug 1092991
| Summary: | xmmintrin.h:115:1: error: inlining failed in call to always_inline '_mm_setzero_ps': target specific option mismatch | ||
|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Kalev Lember <kalevlember> |
| Component: | gstreamer1-plugins-base | Assignee: | Brian Pepple <bdpepple> |
| Status: | CLOSED RAWHIDE | QA Contact: | Fedora Extras Quality Assurance <extras-qa> |
| Severity: | unspecified | Docs Contact: | |
| Priority: | unspecified | ||
| Version: | rawhide | CC: | bdpepple, jakub, law, uraeus, wtaymans |
| Target Milestone: | --- | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | Doc Type: | Bug Fix | |
| Doc Text: | Story Points: | --- | |
| Clone Of: | Environment: | ||
| Last Closed: | 2014-06-15 19:17:35 UTC | Type: | Bug |
| Regression: | --- | Mount Type: | --- |
| Documentation: | --- | CRM: | |
| Verified Versions: | Category: | --- | |
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
| Cloudforms Team: | --- | Target Upstream Version: | |
| Embargoed: | |||
If -msse{,2} etc. isn't passed, then you shouldn't use those intrinsics that require that ISA, unless you use __attribute__((target ("sse"))) or similar on the routine that calls it.
GCC 4.8 just didn't provide those intrinsics in the headers at all when corresponding ISA hasn't been enabled, GCC 4.9 now provides all of them in routines that through #pragma GCC target get the right ISA, which is needed so that you can use the intrinsics in #pragma GCC target/__attribute__((target ()))
routines.
So, this is a bug in gstreamer plugin.
Thanks for the help. Reassigning to gstreamer1-plugins-base. Fixed by applying patches from upstream https://bugzilla.gnome.org/show_bug.cgi?id=670690 |
I am seeing a regression building gstreamer1-plugins-base with gcc 4.9.0. The same code built fine with gcc 4.8, but with 4.9 the i686 builds fail. gstreamer1-plugins-base compiles in the SSE-optimized code for both i686/x86_64, and uses ORC at runtime for determining whether the platform supports SSE. Because of that (and because of Fedora's default %optflags), it isn't passing -msse to the compiler. I guess that's what trips the compiler over: libtool: compile: gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I../.. -I../../gst-libs -I../../gst-libs -pthread -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -pthread -I/usr/include/gstreamer-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -DG_THREADS_MANDATORY -DG_DISABLE_CAST_CHECKS -DG_DISABLE_ASSERT -Wall -Wdeclaration-after-statement -Wvla -Wpointer-arith -Wmissing-declarations -Wmissing-prototypes -Wredundant-decls -Wundef -Wwrite-strings -Wformat-nonliteral -Wformat-security -Winit-self -Wmissing-include-dirs -Waddress -Waggregate-return -Wno-multichar -Wnested-externs -g -I/usr/include/orc-0.4 -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -c speex_resampler_float.c -fPIC -DPIC -o .libs/libgstaudioresample_la-speex_resampler_float.o In file included from resample.c:140:0, from speex_resampler_float.c:27: resample_sse.h: In function 'interpolate_product_single': resample_sse.h:62:10: warning: SSE vector return without SSE enabled changes the ABI [-Wpsabi] __m128 sum = _mm_setzero_ps(); ^ In file included from resample_sse.h:38:0, from resample.c:140, from speex_resampler_float.c:27: resample_sse.h: In function 'inner_product_single': /usr/lib/gcc/i686-redhat-linux/4.9.0/include/xmmintrin.h:115:1: error: inlining failed in call to always_inline '_mm_setzero_ps': target specific option mismatch _mm_setzero_ps (void) ^ In file included from resample.c:140:0, from speex_resampler_float.c:27: resample_sse.h:46:11: error: called from here __m128 sum = _mm_setzero_ps(); ^ ... and so on, rest of the errors cut out for brevity.