llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-backend-webassembly Author: None (mcbarton) <details> <summary>Changes</summary> @<!-- -->vgvassilev @<!-- -->anutosh491 This is what it took for me to enable running ClangReplInterpreterTests in an Emscripten environment. When I ran this patch for llvm 20 we could run InterpreterTest.InstantiateTemplate , but now it crashes gtest when running in node. Let me know what you think. --- Full diff: https://github.com/llvm/llvm-project/pull/150977.diff 5 Files Affected: - (modified) clang/unittests/Interpreter/CMakeLists.txt (+55-26) - (modified) clang/unittests/Interpreter/IncrementalCompilerBuilderTest.cpp (+3) - (modified) clang/unittests/Interpreter/InterpreterTest.cpp (+9) - (modified) llvm/cmake/modules/AddLLVM.cmake (+3-1) - (modified) llvm/lib/Target/WebAssembly/TargetInfo/WebAssemblyTargetInfo.cpp (+3-2) ``````````diff diff --git a/clang/unittests/Interpreter/CMakeLists.txt b/clang/unittests/Interpreter/CMakeLists.txt index 1dda9024075a1..a84ab045d4333 100644 --- a/clang/unittests/Interpreter/CMakeLists.txt +++ b/clang/unittests/Interpreter/CMakeLists.txt @@ -1,31 +1,60 @@ -add_distinct_clang_unittest(ClangReplInterpreterTests - IncrementalCompilerBuilderTest.cpp - IncrementalProcessingTest.cpp - InterpreterTest.cpp - InterpreterExtensionsTest.cpp - CodeCompletionTest.cpp - - EXPORT_SYMBOLS - - CLANG_LIBS - clangAST - clangBasic - clangInterpreter - clangFrontend - clangSema - - LINK_LIBS - LLVMTestingSupport - - LLVM_COMPONENTS - ${LLVM_TARGETS_TO_BUILD} - Core - MC - OrcJIT - Support - TargetParser +if(EMSCRIPTEN) + + add_distinct_clang_unittest(ClangReplInterpreterTests + IncrementalCompilerBuilderTest.cpp + IncrementalProcessingTest.cpp + InterpreterTest.cpp + InterpreterExtensionsTest.cpp + CodeCompletionTest.cpp + + CLANG_LIBS + clangInterpreter + ) + + target_link_options(ClangReplInterpreterTests + PUBLIC "SHELL: -s MAIN_MODULE=1" + PUBLIC "SHELL: -s ALLOW_MEMORY_GROWTH=1" + PUBLIC "SHELL: -s STACK_SIZE=32mb" + PUBLIC "SHELL: -s INITIAL_MEMORY=128mb" + PUBLIC "SHELL: --emrun" ) + set_target_properties(ClangReplInterpreterTests PROPERTIES + SUFFIX ".html" + ) + +else() + + add_distinct_clang_unittest(ClangReplInterpreterTests + IncrementalCompilerBuilderTest.cpp + IncrementalProcessingTest.cpp + InterpreterTest.cpp + InterpreterExtensionsTest.cpp + CodeCompletionTest.cpp + + EXPORT_SYMBOLS + + CLANG_LIBS + clangAST + clangBasic + clangInterpreter + clangFrontend + clangSema + + LINK_LIBS + LLVMTestingSupport + + LLVM_COMPONENTS + ${LLVM_TARGETS_TO_BUILD} + Core + MC + OrcJIT + Support + TargetParser + ) + +endif() + # Exceptions on Windows are not yet supported. if(NOT WIN32) add_subdirectory(ExceptionTests) diff --git a/clang/unittests/Interpreter/IncrementalCompilerBuilderTest.cpp b/clang/unittests/Interpreter/IncrementalCompilerBuilderTest.cpp index c4a40071f55cf..7c17e28bf1a68 100644 --- a/clang/unittests/Interpreter/IncrementalCompilerBuilderTest.cpp +++ b/clang/unittests/Interpreter/IncrementalCompilerBuilderTest.cpp @@ -37,6 +37,9 @@ TEST(IncrementalCompilerBuilder, SetCompilerArgs) { } TEST(IncrementalCompilerBuilder, SetTargetTriple) { +#ifdef EMSCRIPTEN + GTEST_SKIP() << "Test fails for Emscipten builds"; +#endif auto CB = clang::IncrementalCompilerBuilder(); CB.SetTargetTriple("armv6-none-eabi"); auto CI = cantFail(CB.CreateCpp()); diff --git a/clang/unittests/Interpreter/InterpreterTest.cpp b/clang/unittests/Interpreter/InterpreterTest.cpp index 768058b954d49..ad345d2f9e1b6 100644 --- a/clang/unittests/Interpreter/InterpreterTest.cpp +++ b/clang/unittests/Interpreter/InterpreterTest.cpp @@ -147,6 +147,9 @@ TEST_F(InterpreterTest, DeclsAndStatements) { } TEST_F(InterpreterTest, UndoCommand) { +#ifdef EMSCRIPTEN + GTEST_SKIP() << "Test fails for Emscipten builds"; +#endif Args ExtraArgs = {"-Xclang", "-diagnostic-log-file", "-Xclang", "-"}; // Create the diagnostic engine with unowned consumer. @@ -256,6 +259,9 @@ static NamedDecl *LookupSingleName(Interpreter &Interp, const char *Name) { } TEST_F(InterpreterTest, InstantiateTemplate) { +#ifdef EMSCRIPTEN + GTEST_SKIP() << "Test fails for Emscipten builds"; +#endif // FIXME: We cannot yet handle delayed template parsing. If we run with // -fdelayed-template-parsing we try adding the newly created decl to the // active PTU which causes an assert. @@ -295,6 +301,9 @@ TEST_F(InterpreterTest, InstantiateTemplate) { } TEST_F(InterpreterTest, Value) { +#ifdef EMSCRIPTEN + GTEST_SKIP() << "Test fails for Emscipten builds"; +#endif std::vector<const char *> Args = {"-fno-sized-deallocation"}; std::unique_ptr<Interpreter> Interp = createInterpreter(Args); diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 83772ed8d2b13..40614d2b47868 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -1764,7 +1764,9 @@ function(add_unittest test_suite test_name) set(LLVM_REQUIRES_RTTI OFF) endif() - list(APPEND LLVM_LINK_COMPONENTS Support) # gtest needs it for raw_ostream + if(NOT EMSCRIPTEN) + list(APPEND LLVM_LINK_COMPONENTS Support) # gtest needs it for raw_ostream + endif() add_llvm_executable(${test_name} IGNORE_EXTERNALIZE_DEBUGINFO NO_INSTALL_RPATH ${ARGN}) get_subproject_title(subproject_title) set_target_properties(${test_name} PROPERTIES FOLDER "${subproject_title}/Tests/Unit") diff --git a/llvm/lib/Target/WebAssembly/TargetInfo/WebAssemblyTargetInfo.cpp b/llvm/lib/Target/WebAssembly/TargetInfo/WebAssemblyTargetInfo.cpp index e65fa8e60aeb1..d0371374daf2d 100644 --- a/llvm/lib/Target/WebAssembly/TargetInfo/WebAssemblyTargetInfo.cpp +++ b/llvm/lib/Target/WebAssembly/TargetInfo/WebAssemblyTargetInfo.cpp @@ -29,8 +29,9 @@ Target &llvm::getTheWebAssemblyTarget64() { extern "C" LLVM_ABI LLVM_EXTERNAL_VISIBILITY void LLVMInitializeWebAssemblyTargetInfo() { - RegisterTarget<Triple::wasm32> X(getTheWebAssemblyTarget32(), "wasm32", - "WebAssembly 32-bit", "WebAssembly"); + RegisterTarget<Triple::wasm32, /*HasJIT=*/true> X( + getTheWebAssemblyTarget32(), "wasm32", "WebAssembly 32-bit", + "WebAssembly"); RegisterTarget<Triple::wasm64> Y(getTheWebAssemblyTarget64(), "wasm64", "WebAssembly 64-bit", "WebAssembly"); } `````````` </details> https://github.com/llvm/llvm-project/pull/150977 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
