In order to incorporate llvm-libc into Android, we MUST to support 32b x86.
Currently, the most immediate build failure with -m32 is:
In file included from external/llvm-libc/test/UnitTest/LibcTest.cpp:9:
In file included from external/llvm-libc/test/UnitTest/LibcTest.h:28:
In file included from external/llvm-libc/src/__support/CPP/string.h:14:
In file included from external/llvm-libc/src/string/memory_utils/inline_memcpy.h:22:
external/llvm-libc/src/string/memory_utils/x86_64/inline_memcpy.h:195:22: error: no member named 'K_AVX' in namespace '
llvmlibc::x86'
195 | if constexpr (x86::K_AVX) {
| ~~~~~^
external/llvm-libc/src/string/memory_utils/x86_64/inline_memcpy.h:214:17: error: no member named 'Memcpy' in namespace
'llvmlibc::x86'
214 | return x86::Memcpy::repmovsb(dst, src, count);
| ~~~~~^
external/llvm-libc/src/string/memory_utils/x86_64/inline_memcpy.h:219:19: error: no member named 'Memcpy' in namespace
'llvmlibc::x86'
219 | return x86::Memcpy::repmovsb(dst, src, count);
| ~~~~~^
This is because x86::K_AVX is only defined when LIBC_TARGET_ARCH_IS_X86_64 is, which is 64b only. We probably need more preprocessor guards using LIBC_TARGET_ARCH_IS_X86_64 (64b vs 32b).
(There may be more build or runtime failures)
cc @gchatelet @enh-google
It will be less work for us to support 32b x86 then for Android to drop 32b x86 support.
In order to incorporate llvm-libc into Android, we MUST to support 32b x86.
Currently, the most immediate build failure with
-m32is:This is because
x86::K_AVXis only defined whenLIBC_TARGET_ARCH_IS_X86_64is, which is 64b only. We probably need more preprocessor guards usingLIBC_TARGET_ARCH_IS_X86_64(64b vs 32b).(There may be more build or runtime failures)
cc @gchatelet @enh-google
It will be less work for us to support 32b x86 then for Android to drop 32b x86 support.