Go to file
Dan Liew ef163f5a20 [CMake] Separate the detection Darwin platforms architectures for the
built-ins from the rest of compiler-rt.

The detection of supported platform (os) architectures for Darwin relies
on the `darwin_test_archs()` CMake function. This is used both for
building the builtins (`builtin-config-ix.cmake`) and for the rest of
the compiler-rt (`config-ix.cmake`).

`darwin_test_archs()`  implements a cache, presumably to speed up CMake
re-configures.  Unfortunately this caching is buggy because it depends
on external global state (i.e. the `TEST_COMPILE_ONLY` variable) and
this is not taken into account. For `config-ix.cmake`
`TEST_COMPILE_ONLY` is not set and for `builtin-config-ix.cmake`
`TEST_COMPILE_ONLY` is set to `On`.  This makes the
`darwin_test_archs()` function racey in the sense that a call from one
calling context will poison the cache for the other calling context.

This is actually an issue George Karpenkov discovered a while back
and had an incomplete patch for (https://reviews.llvm.org/D45337)
but this was never merged.

To workaround this, this patch switches to using a different set of
variables for the platform architecture builtins, i.e.
`DARWIN_<OS>_ARCHS` -> `DARWIN_<OS>_BUILTIN_ARCHS`. This avoids the
cache poisoning problem because the cached variable names are different.
This also has the advantage that the the configured architectures for
builtins and the rest of the compiler-rt are now independent and
can be set differently if necessary.

Note in `darwin_test_archs()` we also now pass `-w` to the compiler
because `try_compile_only()` treats compiler warnings as errors.  This
was extremely fragile because compiler warnings (can easily appear due
to a buggy compiler or SDK headers) would cause compiler-rt to think an
architecture on Darwin wasn't supported.

rdar://problem/48637491

llvm-svn: 371871
2019-09-13 17:31:22 +00:00
clang [Sema][Typo Correction] Fix potential infite loop on ambiguity checks 2019-09-13 14:43:24 +00:00
clang-tools-extra [ClangTidy] Adjust the name getCheckName to getCheckerName due to API change. 2019-09-12 21:18:44 +00:00
compiler-rt [CMake] Separate the detection Darwin platforms architectures for the 2019-09-13 17:31:22 +00:00
debuginfo-tests
libclc Revert "Rename F_{None,Text,Append} to OF_{None,Text,Append}. NFC" 2019-08-05 17:23:23 +00:00
libcxx Recommit r370502: Make `vector` unconditionally move elements when 2019-09-13 16:09:33 +00:00
libcxxabi Fix incorrect demangling of call operator of lambda with explicit 2019-09-09 23:07:25 +00:00
libunwind [runtimes] Don't depend on libpthread on Android 2019-07-22 20:41:03 +00:00
lld lld-link: Add a flag /lldignoreenv that makes lld-link ignore env vars. 2019-09-13 13:13:52 +00:00
lldb [lldb] - Update unit tests after lib/ObjectYAML change. 2019-09-13 16:00:28 +00:00
llgo
llvm [Remarks][NFC] Forward declare ParsedStringTable 2019-09-13 17:27:28 +00:00
openmp [OpenMP] Change initialization of __kmp_global 2019-09-04 17:47:37 +00:00
parallel-libs
polly [Polly] Fix lib/Transform/ScheduleOptimizer.cpp compilation on Solaris 2019-09-13 08:45:06 +00:00
pstl [pstl] Allow customizing whether per-TU insulation is provided 2019-08-13 12:49:00 +00:00
.arcconfig
.clang-format
.clang-tidy
.git-blame-ignore-revs Add LLDB reformatting to .git-blame-ignore-revs 2019-09-04 09:31:55 +00:00
.gitignore Add a newline at the end of the file 2019-09-04 06:33:46 +00:00
README.md

README.md

The LLVM Compiler Infrastructure

This directory and its subdirectories contain source code for LLVM, a toolkit for the construction of highly optimized compilers, optimizers, and runtime environments.