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.

Reply via email to