Hello, I'm trying to fix a FTBFS bug in cpl, a C library. The package fails in i686 on Fedora>=29 and compiles in Fedora<=28

https://koji.fedoraproject.org/koji/taskinfo?taskID=29215071

https://kojipkgs.fedoraproject.org//work/tasks/5071/29215071/build.log

I imagine that, after enabling SSE2 in Fedora 29, we are compiling a different code path
that fails. I don't have any experience with this kind of code.
The error is related with _m_from_int64, that seems undefined? But _m_from_int64 is defined in one of the *intrin.h headers. I'm don't know what is happening.


cpl_image_basic.c: In function 'dcompl_mult_sse_fast':
cpl_image_basic.c:245:30: warning: implicit declaration of function '_m_from_int64'; did you mean '_m_from_int'? [-Wimplicit-function-declaration]
 #    define cpl_m_from_int64 _m_from_int64
                              ^~~~~~~~~~~~~
cpl_image_basic.c:260:54: note: in expansion of macro 'cpl_m_from_int64'
   _mm_add_pd(a, _mm_xor_pd(b, (__m128d)_mm_set_epi64(cpl_m_from_int64(0x0llu), \
                                                      ^~~~~~~~~~~~~~~~
cpl_image_basic.c:4065:12: note: in expansion of macro 'CPL_MM_ADDSUB_PD'
     return CPL_MM_ADDSUB_PD(t1, sb); /* x * y - y * w, z*y + x * w */
            ^~~~~~~~~~~~~~~~
cpl_image_basic.c:245:30: error: incompatible type for argument 1 of '_mm_set_epi64'
 #    define cpl_m_from_int64 _m_from_int64
                              ^
cpl_image_basic.c:260:54: note: in expansion of macro 'cpl_m_from_int64'
   _mm_add_pd(a, _mm_xor_pd(b, (__m128d)_mm_set_epi64(cpl_m_from_int64(0x0llu), \
                                                      ^~~~~~~~~~~~~~~~
cpl_image_basic.c:4065:12: note: in expansion of macro 'CPL_MM_ADDSUB_PD'
     return CPL_MM_ADDSUB_PD(t1, sb); /* x * y - y * w, z*y + x * w */
            ^~~~~~~~~~~~~~~~
In file included from /usr/lib/gcc/i686-redhat-linux/8/include/xmmintrin.h:1252,
                 from cpl_image_basic.c:240:
/usr/lib/gcc/i686-redhat-linux/8/include/emmintrin.h:595:22: note: expected '__m64' {aka '__vector(2) int'} but argument is of type 'int'
 _mm_set_epi64 (__m64 __q1,  __m64 __q0)
                ~~~~~~^~~~

 cpl_image_basic.c:245:30: error: incompatible type for argument 2 of '_mm_set_epi64'
 #    define cpl_m_from_int64 _m_from_int64


Any help would be appreciated, I have never touched code like this.

Best, Sergio