pcc added a comment. Here's a standalone reproducer for the problem:
$ cat exe.cpp #include <functional> std::function<void()> f(); int main() { f()(); } $ cat dso.cpp #include <functional> __attribute__((visibility("default"))) std::function<void()> f() { return [](){}; } $ ~/l3/ra-cmake/bin/clang++ -fsanitize=cfi -fvisibility=hidden dso.cpp -shared -flto -fuse-ld=lld -Wl,-soname,dso.so -o dso.so -stdlib=libc++ -fno-rtti -fno-exceptions $ ~/l3/ra-cmake/bin/clang++ -fsanitize=cfi -fvisibility=hidden exe.cpp -flto -fuse-ld=lld dso.so -stdlib=libc++ $ LD_LIBRARY_PATH=.:$HOME/l3/ra-cmake/lib ./a.out Illegal instruction With this patch: $ LD_LIBRARY_PATH=.:$HOME/l3/ra-cmake/lib ./a.out [no output] Repository: rCXX libc++ CHANGES SINCE LAST ACTION https://reviews.llvm.org/D48680/new/ https://reviews.llvm.org/D48680 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits