On Thu, Aug 8, 2019, at 15:23, Daniel Kolesa wrote: > On Thu, Aug 8, 2019, at 14:32, Carl Eugen Hoyos wrote: > > Am Mi., 7. Aug. 2019 um 19:39 Uhr schrieb Daniel Kolesa > > <dan...@octaforge.org>: > > > > > > While this technically compiles in current ffmpeg, this is only > > > because ffmpeg is compiled in strict ISO C mode, which disables > > > the builtin 'vector' keyword for AltiVec/VSX. Instead this gets > > > replaced with a macro inside altivec.h, which defines vector to > > > be actually __vector, which accepts random types. > > > > > > Normally, the vector keyword should be used only with plain > > > scalar non-typedef types, such as unsigned int. But we have the > > > vec_(s|u)(8|16|32) macros, which can be used in a portable manner, > > > in util_altivec.h in libavutil. > > > > > > This is also consistent with other AltiVec/VSX code elsewhere in > > > the tree. > > > > > > Fixes #7861. > > > > Since I cannot reproduce any issue with current FFmpeg on Power8 > > using gcc-8.3.1, at least the commit message has to be changed, > > same for the other patch. > > I don't see why that would need changing. For one, the commit message > for the first patch describes exactly what is wrong and also the reason > you can't reproduce it by default (which I also mentioned in the > ticket). I believe the second patch's reproducibility is limited to > more recent gcc (probably only 9.x series), it was reproduced by me, > the other person in the ticket, as well as the Fedora project (see > http://koji.rpmfusion.org/koji/taskinfo?taskID=341163).
For further reference, see the docs: https://gcc.gnu.org/onlinedocs/gcc-8.3.0/gcc/PowerPC-AltiVec_002fVSX-Built-in-Functions.html --- GCC allows using a typedef name as the type specifier for a vector type, but only under the following circumstances: When using __vector instead of vector; for example, typedef signed short int16; __vector int16 data; When using vector in keyword-and-predefine mode; for example, typedef signed short int16; vector int16 data; Note that keyword-and-predefine mode is enabled by disabling GNU extensions (e.g., by using -std=c11) and including <altivec.h>. --- That means you can easily reproduce the first patch by replacing -std=c11 with -std=gnu11 (or no -std). By default, ffmpeg compiles with -std=c11. > > Regards > > > > > Carl Eugen > > _______________________________________________ > > ffmpeg-devel mailing list > > ffmpeg-devel@ffmpeg.org > > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > > > To unsubscribe, visit link above, or email > > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".