emscripten-core / emscripten-fastcomp

LLVM plus Emscripten's asm.js backend
Other
182 stars 111 forks source link

Cherry-pick upstream r357714 #266

Closed dschuff closed 4 years ago

dschuff commented 4 years ago

This allows LLVM to be built with clang-cl on windows. commit 41fe3a54c2613d81a68eb02ae76b394d0b8849ab Author: Reid Kleckner rnk@google.com Date: Thu Apr 4 11:30:07 2019

Ensure that ManagedStatic is constant initialized in MSVC 2017 & 2019

Fixes PR41367.

This effectively relands r357655 with a workaround for MSVC 2017.

I tried various approaches with unions, but I ended up going with this
ifdef approach because it lets us write the proper C++11 code that we
want to write, with a separate workaround that we can delete when we
drop MSVC 2017 support.

This also adds LLVM_REQUIRE_CONSTANT_INITIALIZATION, which wraps
[[clang::require_constant_initialization]]. This actually detected a
minor issue when using clang-cl where clang wasn't able to use the
constexpr constructor in MSVC's STL, so I switched back to using the
default ctor of std::atomic<void*>.
dschuff commented 4 years ago

This is unrelated to the current build issues, other than the fact that building fastcomp without goma is just slowing all the builds down.