Enable compiler-rt on SPARC
authorRainer Orth <ro@gcc.gnu.org>
Fri, 12 Jul 2019 08:30:17 +0000 (08:30 +0000)
committerRainer Orth <ro@gcc.gnu.org>
Fri, 12 Jul 2019 08:30:17 +0000 (08:30 +0000)
commit4a9a772f44bfcd5d3387cce61e140cfd7e54f913
treeaba46a24914d83065a4d4c3d4ac7f7c1b95c6fbf
parent56f2f1cdb36a152a0f5f03aa6b379e2dd9d9cedc
Enable compiler-rt on SPARC

This patch enables compiler-rt on SPARC targets. Most of the changes are straightforward:

- Add 32 and 64-bit sparc to compiler-rt

- lib/builtins/fp_lib.h needed to check if the int128_t and uint128_t types exist (which they don't on sparc)

There's one issue of note: many asan tests fail to compile on Solaris/SPARC:

fatal error: error in backend: Function "_ZN7testing8internal16BoolFromGTestEnvEPKcb": over-aligned dynamic alloca not supported.

Therefore, while asan is still built, both asan and ubsan-with-asan testing is disabled. The
goal is to check if asan keeps compiling on Solaris/SPARC. This serves asan in gcc,
which doesn't have the problem above and works just fine.

With this patch, sparcv9-sun-solaris2.11 test results are pretty good:

Failing Tests (9):
    Builtins-sparc-sunos :: divtc3_test.c
    Builtins-sparcv9-sunos :: compiler_rt_logbl_test.c
    Builtins-sparcv9-sunos :: divtc3_test.c
[...]
    UBSan-Standalone-sparc :: TestCases/TypeCheck/misaligned.cpp
    UBSan-Standalone-sparcv9 :: TestCases/TypeCheck/misaligned.cpp

The builtin failures are due to Bugs 42493 and 42496. The tree contained a few additonal
patches either currently in review or about to be submitted.

Tested on sparcv9-sun-solaris2.11.

Differential Revision: https://reviews.llvm.org/D40943

llvm-svn: 365880
compiler-rt/cmake/Modules/CompilerRTUtils.cmake
compiler-rt/cmake/base-config-ix.cmake
compiler-rt/cmake/builtin-config-ix.cmake
compiler-rt/cmake/config-ix.cmake
compiler-rt/lib/asan/tests/CMakeLists.txt
compiler-rt/lib/builtins/CMakeLists.txt
compiler-rt/lib/builtins/fp_lib.h
compiler-rt/test/asan/CMakeLists.txt
compiler-rt/test/ubsan/CMakeLists.txt