Skip to content

Commit

Permalink
[compiler-rt][CMake] Enable TF intrinsics on powerpc32 Linux
Browse files Browse the repository at this point in the history
clang generates calls to these intrinsics when used for ppc32/linux, when using libgcc this works ok but when using compiler-rt for rtlib it fails with missing intrinsic symbols. also see [1]

[1] https://lists.llvm.org/pipermail/llvm-dev/2014-May/072784.html

Reviewed By: MaskRay, glaubitz

Differential Revision: https://reviews.llvm.org/D121379
  • Loading branch information
kraj authored and MaskRay committed Jul 24, 2022
1 parent b33aeee commit 8f24a56
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 10 deletions.
16 changes: 7 additions & 9 deletions compiler-rt/lib/builtins/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -621,11 +621,9 @@ set(mips64_SOURCES ${GENERIC_TF_SOURCES}
set(mips64el_SOURCES ${GENERIC_TF_SOURCES}
${mips_SOURCES})

set(powerpc_SOURCES ${GENERIC_SOURCES})

set(powerpcspe_SOURCES ${GENERIC_SOURCES})

set(powerpc64_SOURCES
set(powerpc_SOURCES
ppc/divtc3.c
ppc/fixtfdi.c
ppc/fixunstfdi.c
Expand All @@ -640,14 +638,15 @@ set(powerpc64_SOURCES
)
# These routines require __int128, which isn't supported on AIX.
if (NOT ${CMAKE_SYSTEM_NAME} MATCHES "AIX")
set(powerpc64_SOURCES
set(powerpc_SOURCES
ppc/floattitf.c
ppc/fixtfti.c
ppc/fixunstfti.c
${powerpc64_SOURCES}
${powerpc_SOURCES}
)
endif()
set(powerpc64le_SOURCES ${powerpc64_SOURCES})
set(powerpc64le_SOURCES ${powerpc_SOURCES})
set(powerpc64_SOURCES ${powerpc_SOURCES})

set(riscv_SOURCES
riscv/save.S
Expand Down Expand Up @@ -754,9 +753,8 @@ else ()
list(APPEND BUILTIN_CFLAGS_${arch} -fomit-frame-pointer -DCOMPILER_RT_ARMHF_TARGET)
endif()

# For RISCV32, we must force enable int128 for compiling long
# double routines.
if("${arch}" STREQUAL "riscv32")
# For some arches, force enable int128 for compiling long double routines.
if("${arch}" STREQUAL "powerpc" OR "${arch}" STREQUAL "riscv32")
list(APPEND BUILTIN_CFLAGS_${arch} -fforce-enable-int128)
endif()

Expand Down
2 changes: 1 addition & 1 deletion compiler-rt/lib/builtins/int_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ typedef union {
} udwords;

#if defined(__LP64__) || defined(__wasm__) || defined(__mips64) || \
defined(__riscv) || defined(_WIN64)
defined(__riscv) || defined(_WIN64) || defined(__powerpc__)
#define CRT_HAS_128BIT
#endif

Expand Down

0 comments on commit 8f24a56

Please sign in to comment.