[PATCH] D59150: [CMake] Separate the detection Darwin platforms architectures for the built-ins from the rest of compiler-rt.

Dan Liew via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 8 12:59:16 PST 2019


delcypher created this revision.
delcypher added reviewers: kubamracek, george.karpenkov, steven_wu, arphaman, dcoughlin, beanz.
Herald added subscribers: Sanitizers, jdoerfert, mgorny, dberris.
Herald added projects: LLVM, Sanitizers.

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.

rdar://problem/48637491


Repository:
  rCRT Compiler Runtime

https://reviews.llvm.org/D59150

Files:
  cmake/Modules/CompilerRTDarwinUtils.cmake
  cmake/builtin-config-ix.cmake

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D59150.189910.patch
Type: text/x-patch
Size: 5324 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190308/6e8c44e9/attachment.bin>


More information about the llvm-commits mailing list