https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70010
Bug ID: 70010 Summary: powerpc: -flto forgets 'no-vsx' function attributes Product: gcc Version: 5.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: cyrilbur at gmail dot com Target Milestone: --- Created attachment 37818 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37818&action=edit C code to reproduce $ powerpc64-buildroot-linux-gnu-gcc -v Using built-in specs. COLLECT_GCC=/scratch/cyrilb/buildroot/builds/be64/host/usr/bin/powerpc64-buildroot-linux-gnu-gcc.br_real COLLECT_LTO_WRAPPER=/scratch/cyrilb/buildroot/builds/be64/host/usr/libexec/gcc/powerpc64-buildroot-linux-gnu/5.2.0/lto-wrapper Target: powerpc64-buildroot-linux-gnu Configured with: ./configure --prefix=/scratch/cyrilb/buildroot/builds/be64/host/usr --sysconfdir=/scratch/cyrilb/buildroot/builds/be64/host/etc --enable-static --target=powerpc64-buildroot-linux-gnu --with-sysroot=/scratch/cyrilb/buildroot/builds/be64/host/usr/powerpc64-buildroot-linux-gnu/sysroot --disable-__cxa_atexit --with-gnu-ld --disable-libssp --disable-multilib --with-gmp=/scratch/cyrilb/buildroot/builds/be64/host/usr --with-mpfr=/scratch/cyrilb/buildroot/builds/be64/host/usr --with-pkgversion='Buildroot 2016.02-rc2-00082-ga737c60' --with-bugurl=http://bugs.buildroot.net/ --disable-libquadmath --enable-tls --disable-libmudflap --enable-threads --with-mpc=/scratch/cyrilb/buildroot/builds/be64/host/usr --without-isl --without-cloog --disable-decimal-float --with-cpu=power8 --enable-languages=c --with-build-time-tools=/scratch/cyrilb/buildroot/builds/be64/host/usr/powerpc64-buildroot-linux-gnu/bin --enable-shared --disable-libgomp --enable-targets=powerpc64-linux Thread model: posix gcc version 5.2.0 (Buildroot 2016.02-rc2-00082-ga737c60) Couldn't test on GCC 5.3.x due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69969 $ powerpc64-buildroot-linux-gnu-gcc -O2 -Wall -Wextra -save-temps ~/no-vsx-test.c Produces correct assembly. $ /scratch/cyrilb/buildroot/builds/be64/host/usr/bin/powerpc64-buildroot-linux-gnu-gcc -O2 -Wall -Wextra -flto -save-temps ~/no-vsx-test.c Appears to be inlineing altivec_touch_fn() and in the process it looks like it has forgotten about __attribute__((__target__("no-vsx"))) for altivec_touch_fn() The calls to printf in my .c are to prevent -flto from optimising everything away.