IBM VSX checks fail with gcc-10 - Redmine #3380

This is part of https://bugzilla.redhat.com/show_bug.cgi?id=1799473

-- Flag was accepted, but it did not build test source (this could be due to either the compiler or binutils)
-- Performing Test CXX_maltivec_mabi_altivec_FLAG_ACCEPTED
-- Performing Test CXX_maltivec_mabi_altivec_FLAG_ACCEPTED - Success
-- Performing Test CXX_maltivec_mabi_altivec_COMPILE_WORKS
-- Performing Test CXX_maltivec_mabi_altivec_COMPILE_WORKS - Failed
-- Flag was accepted, but it did not build test source (this could be due to either the compiler or binutils)
-- Performing Test CXX_qarch_auto_qaltivec_FLAG_ACCEPTED
-- Performing Test CXX_qarch_auto_qaltivec_FLAG_ACCEPTED - Failed
-- Performing Test CXX_COMPILE_WORKS_WITHOUT_SPECIAL_FLAGS
-- Performing Test CXX_COMPILE_WORKS_WITHOUT_SPECIAL_FLAGS - Failed
-- Could not find any flag to build test source (this could be due to either the compiler or binutils)
CMake Error at cmake/gmxManageSimd.cmake:51 (message):
  Cannot find IBM VSX compiler flag.  Use a newer compiler, or disable SIMD
  support (slower).
Call Stack (most recent call first):
  cmake/gmxManageSimd.cmake:265 (gmx_give_fatal_error_when_simd_support_not_found)
  CMakeLists.txt:719 (gmx_manage_simd)


-- Configuring incomplete, errors occurred!

looking at CMakeOutput.log (attached):

Run Build Command(s):/usr/bin/gmake cmTC_90725/fast && /usr/bin/gmake -f CMakeFiles/cmTC_90725.dir/build.make CMakeFiles/cmTC_90725.dir/build
gmake[1]: Entering directory '/builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_90725.dir/src.cxx.o
/usr/bin/c++    -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -std=c++11   -DCXX_qarch_auto_qaltivec_FLAG_ACCEPTED -mcpu=power8 -mpower8-vector  -qarch=auto -qaltivec   -o CMakeFiles/cmTC_90725.dir/src.cxx.o -c /builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp/src.cxx
c++: error: unrecognized command-line option '-qarch=auto'
c++: error: unrecognized command-line option '-qaltivec'; did you mean '-maltivec'?
gmake[1]: *** [CMakeFiles/cmTC_90725.dir/build.make:66: CMakeFiles/cmTC_90725.dir/src.cxx.o] Error 1
gmake[1]: Leaving directory '/builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp'
gmake: *** [Makefile:121: cmTC_90725/fast] Error 2


Source file was:
int main() { return 0;}
Performing C++ SOURCE FILE Test CXX_COMPILE_WORKS_WITHOUT_SPECIAL_FLAGS failed with the following output:
Change Dir: /builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/gmake cmTC_5ed9c/fast && /usr/bin/gmake -f CMakeFiles/cmTC_5ed9c.dir/build.make CMakeFiles/cmTC_5ed9c.dir/build
gmake[1]: Entering directory '/builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp'
Building CXX object CMakeFiles/cmTC_5ed9c.dir/src.cxx.o
/usr/bin/c++    -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mcpu=power8 -mtune=power8 -fasynchronous-unwind-tables -fstack-clash-protection -std=c++11   -DCXX_COMPILE_WORKS_WITHOUT_SPECIAL_FLAGS -mcpu=power8 -mpower8-vector   -o CMakeFiles/cmTC_5ed9c.dir/src.cxx.o -c /builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp/src.cxx
/builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp/src.cxx: In function 'int main()':
/builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp/src.cxx:2:21: error: 'vector' was not declared in this scope; did you mean 'vec_or'?
    2 |          int main(){vector double x,y=vec_splats(1.0);x=vec_madd(y,y,y);return vec_all_ge(y,x);}
      |                     ^~~~~~
      |                     vec_or
/builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp/src.cxx:2:55: error: 'x' was not declared in this scope
    2 |          int main(){vector double x,y=vec_splats(1.0);x=vec_madd(y,y,y);return vec_all_ge(y,x);}
      |                                                       ^
/builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp/src.cxx:2:66: error: 'y' was not declared in this scope
    2 |          int main(){vector double x,y=vec_splats(1.0);x=vec_madd(y,y,y);return vec_all_ge(y,x);}
      |                                                                  ^
In file included from /builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp/src.cxx:1:
/builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp/src.cxx:2:80: error: invalid parameter combination for AltiVec intrinsic '__builtin_vec_vcmpge_p'
    2 |          int main(){vector double x,y=vec_splats(1.0);x=vec_madd(y,y,y);return vec_all_ge(y,x);}
      |                                                                                ^~~~~~~~~~
gmake[1]: *** [CMakeFiles/cmTC_5ed9c.dir/build.make:66: CMakeFiles/cmTC_5ed9c.dir/src.cxx.o] Error 1
gmake[1]: Leaving directory '/builddir/build/BUILD/gromacs-2019.5/serial/CMakeFiles/CMakeTmp'
gmake: *** [Makefile:121: cmTC_5ed9c/fast] Error 2


Source file was:
#include<altivec.h>
         int main(){vector double x,y=vec_splats(1.0);x=vec_madd(y,y,y);return vec_all_ge(y,x);}

WIth gcc-9 this check still works.

(from redmine: issue id 3380, created on 2020-02-14 by junghans)