-
Notifications
You must be signed in to change notification settings - Fork 14.7k
Revert "[clang-repl] Enable extending launchExecutor
(#152562)"
#153180
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This reverts commit eccc6e2.
@llvm/pr-subscribers-clang Author: Abhinav Kumar (kr-2003) ChangesThis reverts Full diff: https://github.com/llvm/llvm-project/pull/153180.diff 5 Files Affected:
diff --git a/clang/include/clang/Interpreter/RemoteJITUtils.h b/clang/include/clang/Interpreter/RemoteJITUtils.h
index bc71232a5cad8..8705a3b1f669d 100644
--- a/clang/include/clang/Interpreter/RemoteJITUtils.h
+++ b/clang/include/clang/Interpreter/RemoteJITUtils.h
@@ -26,8 +26,7 @@
llvm::Expected<std::unique_ptr<llvm::orc::SimpleRemoteEPC>>
launchExecutor(llvm::StringRef ExecutablePath, bool UseSharedMemory,
- llvm::StringRef SlabAllocateSizeString,
- std::function<void()> CustomizeFork = nullptr);
+ llvm::StringRef SlabAllocateSizeString);
/// Create a JITLinkExecutor that connects to the given network address
/// through a TCP socket. A valid NetworkAddress provides hostname and port,
@@ -36,13 +35,4 @@ llvm::Expected<std::unique_ptr<llvm::orc::SimpleRemoteEPC>>
connectTCPSocket(llvm::StringRef NetworkAddress, bool UseSharedMemory,
llvm::StringRef SlabAllocateSizeString);
-#ifdef LLVM_ON_UNIX
-/// Returns PID of last launched executor.
-pid_t getLastLaunchedExecutorPID();
-
-/// Returns PID of nth launched executor.
-/// 1-based indexing.
-pid_t getNthLaunchedExecutorPID(int n);
-#endif
-
#endif // LLVM_CLANG_INTERPRETER_REMOTEJITUTILS_H
diff --git a/clang/lib/Interpreter/RemoteJITUtils.cpp b/clang/lib/Interpreter/RemoteJITUtils.cpp
index c100f46931b6d..c0e663b764785 100644
--- a/clang/lib/Interpreter/RemoteJITUtils.cpp
+++ b/clang/lib/Interpreter/RemoteJITUtils.cpp
@@ -33,10 +33,6 @@
using namespace llvm;
using namespace llvm::orc;
-#if LLVM_ON_UNIX
-static std::vector<pid_t> LaunchedExecutorPID;
-#endif
-
Expected<uint64_t> getSlabAllocSize(StringRef SizeString) {
SizeString = SizeString.trim();
@@ -93,14 +89,9 @@ createSharedMemoryManager(SimpleRemoteEPC &SREPC,
SlabSize, SREPC, SAs);
}
-// Launches an out-of-process executor for remote JIT. The calling program can
-// provide a CustomizeFork callback, which allows it to run custom code in the
-// child process before exec. This enables sending custom setup or code to be
-// executed in the child (out-of-process) executor.
Expected<std::unique_ptr<SimpleRemoteEPC>>
launchExecutor(StringRef ExecutablePath, bool UseSharedMemory,
- llvm::StringRef SlabAllocateSizeString,
- std::function<void()> CustomizeFork) {
+ llvm::StringRef SlabAllocateSizeString) {
#ifndef LLVM_ON_UNIX
// FIXME: Add support for Windows.
return make_error<StringError>("-" + ExecutablePath +
@@ -143,9 +134,6 @@ launchExecutor(StringRef ExecutablePath, bool UseSharedMemory,
close(ToExecutor[WriteEnd]);
close(FromExecutor[ReadEnd]);
- if (CustomizeFork)
- CustomizeFork();
-
// Execute the child process.
std::unique_ptr<char[]> ExecutorPath, FDSpecifier;
{
@@ -170,8 +158,6 @@ launchExecutor(StringRef ExecutablePath, bool UseSharedMemory,
}
// else we're the parent...
- LaunchedExecutorPID.push_back(ChildPID);
-
// Close the child ends of the pipes
close(ToExecutor[ReadEnd]);
close(FromExecutor[WriteEnd]);
@@ -279,18 +265,3 @@ connectTCPSocket(StringRef NetworkAddress, bool UseSharedMemory,
std::move(S), *SockFD, *SockFD);
#endif
}
-
-#if LLVM_ON_UNIX
-
-pid_t getLastLaunchedExecutorPID() {
- if (!LaunchedExecutorPID.size())
- return -1;
- return LaunchedExecutorPID.back();
-}
-
-pid_t getNthLaunchedExecutorPID(int n) {
- if (n - 1 < 0 || n - 1 >= static_cast<int>(LaunchedExecutorPID.size()))
- return -1;
- return LaunchedExecutorPID.at(n - 1);
-}
-#endif
\ No newline at end of file
diff --git a/clang/unittests/Interpreter/CMakeLists.txt b/clang/unittests/Interpreter/CMakeLists.txt
index 24f65cab95d7a..1dda9024075a1 100644
--- a/clang/unittests/Interpreter/CMakeLists.txt
+++ b/clang/unittests/Interpreter/CMakeLists.txt
@@ -1,22 +1,10 @@
-set(CLANG_REPL_TEST_SOURCES
+add_distinct_clang_unittest(ClangReplInterpreterTests
IncrementalCompilerBuilderTest.cpp
IncrementalProcessingTest.cpp
InterpreterTest.cpp
InterpreterExtensionsTest.cpp
CodeCompletionTest.cpp
-)
-if(TARGET compiler-rt)
- list(APPEND CLANG_REPL_TEST_SOURCES
- OutOfProcessInterpreterTests.cpp
- )
- message(STATUS "Compiler-RT found, enabling out of process JIT tests")
-endif()
-
-add_distinct_clang_unittest(ClangReplInterpreterTests
- ${CLANG_REPL_TEST_SOURCES}
-
- PARTIAL_SOURCES_INTENDED
EXPORT_SYMBOLS
CLANG_LIBS
@@ -38,14 +26,6 @@ add_distinct_clang_unittest(ClangReplInterpreterTests
TargetParser
)
-if(TARGET compiler-rt)
- add_dependencies(ClangReplInterpreterTests
- llvm-jitlink-executor
- compiler-rt
- )
- message(STATUS "Adding dependency on compiler-rt for out of process JIT tests")
-endif()
-
# Exceptions on Windows are not yet supported.
if(NOT WIN32)
add_subdirectory(ExceptionTests)
diff --git a/clang/unittests/Interpreter/InterpreterTest.cpp b/clang/unittests/Interpreter/InterpreterTest.cpp
index 5d49089dada87..768058b954d49 100644
--- a/clang/unittests/Interpreter/InterpreterTest.cpp
+++ b/clang/unittests/Interpreter/InterpreterTest.cpp
@@ -15,17 +15,12 @@
#include "clang/AST/Decl.h"
#include "clang/AST/DeclGroup.h"
#include "clang/AST/Mangle.h"
-#include "clang/Basic/Version.h"
-#include "clang/Config/config.h"
#include "clang/Frontend/CompilerInstance.h"
#include "clang/Frontend/TextDiagnosticPrinter.h"
#include "clang/Interpreter/Interpreter.h"
-#include "clang/Interpreter/RemoteJITUtils.h"
#include "clang/Interpreter/Value.h"
#include "clang/Sema/Lookup.h"
#include "clang/Sema/Sema.h"
-#include "llvm/Support/Error.h"
-#include "llvm/TargetParser/Host.h"
#include "llvm/TargetParser/Host.h"
@@ -39,12 +34,6 @@ int Global = 42;
REPL_EXTERNAL_VISIBILITY int getGlobal() { return Global; }
REPL_EXTERNAL_VISIBILITY void setGlobal(int val) { Global = val; }
-#ifdef _WIN32
-#define STDIN_FILENO 0
-#define STDOUT_FILENO 1
-#define STDERR_FILENO 2
-#endif
-
namespace {
class InterpreterTest : public InterpreterTestBase {
diff --git a/clang/unittests/Interpreter/OutOfProcessInterpreterTests.cpp b/clang/unittests/Interpreter/OutOfProcessInterpreterTests.cpp
deleted file mode 100644
index 4d5ef5c70d135..0000000000000
--- a/clang/unittests/Interpreter/OutOfProcessInterpreterTests.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-//===- unittests/Interpreter/OutOfProcessInterpreterTest.cpp --- Interpreter
-// tests when Out-of-Process ----===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// Unit tests for Clang's Interpreter library.
-//
-//===----------------------------------------------------------------------===//
-
-#include "InterpreterTestFixture.h"
-
-#include "clang/AST/Decl.h"
-#include "clang/AST/DeclGroup.h"
-#include "clang/AST/Mangle.h"
-#include "clang/Basic/Version.h"
-#include "clang/Config/config.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/TextDiagnosticPrinter.h"
-#include "clang/Interpreter/Interpreter.h"
-#include "clang/Interpreter/RemoteJITUtils.h"
-#include "clang/Interpreter/Value.h"
-#include "clang/Sema/Lookup.h"
-#include "clang/Sema/Sema.h"
-#include "llvm/Support/Error.h"
-#include "llvm/TargetParser/Host.h"
-
-#include "llvm/TargetParser/Host.h"
-
-#include "gmock/gmock.h"
-#include "gtest/gtest.h"
-
-using namespace clang;
-
-llvm::ExitOnError ExitOnError;
-
-#ifdef _WIN32
-#define STDIN_FILENO 0
-#define STDOUT_FILENO 1
-#define STDERR_FILENO 2
-#endif
-
-namespace {
-
-using Args = std::vector<const char *>;
-
-static void removePathComponent(unsigned N, llvm::SmallString<256> &Path) {
- for (unsigned i = 0; i < N; ++i)
- llvm::sys::path::remove_filename(Path);
-}
-
-static std::string getExecutorPath() {
- llvm::SmallString<256> ExecutorPath(llvm::sys::fs::getMainExecutable(
- nullptr, reinterpret_cast<void *>(&getExecutorPath)));
- removePathComponent(5, ExecutorPath);
- llvm::sys::path::append(ExecutorPath, "bin", "llvm-jitlink-executor");
- return ExecutorPath.str().str();
-}
-
-static std::string getOrcRuntimePath() {
- llvm::SmallString<256> RuntimePath(llvm::sys::fs::getMainExecutable(
- nullptr, reinterpret_cast<void *>(&getOrcRuntimePath)));
- removePathComponent(5, RuntimePath);
- llvm::sys::path::append(RuntimePath, CLANG_INSTALL_LIBDIR_BASENAME, "clang",
- CLANG_VERSION_MAJOR_STRING, "lib");
-
- llvm::Triple SystemTriple(llvm::sys::getProcessTriple());
- if (SystemTriple.isOSBinFormatMachO()) {
- llvm::sys::path::append(RuntimePath, "darwin", "liborc_rt_osx.a");
- } else if (SystemTriple.isOSBinFormatELF()) {
- llvm::sys::path::append(RuntimePath, "x86_64-unknown-linux-gnu",
- "liborc_rt.a");
- }
-
- return RuntimePath.str().str();
-}
-
-static std::unique_ptr<Interpreter>
-createInterpreterWithRemoteExecution(const Args &ExtraArgs = {},
- DiagnosticConsumer *Client = nullptr) {
- Args ClangArgs = {"-Xclang", "-emit-llvm-only"};
- llvm::append_range(ClangArgs, ExtraArgs);
- auto CB = clang::IncrementalCompilerBuilder();
- CB.SetCompilerArgs(ClangArgs);
- auto CI = cantFail(CB.CreateCpp());
- if (Client)
- CI->getDiagnostics().setClient(Client, /*ShouldOwnClient=*/false);
-
- std::unique_ptr<llvm::orc::LLJITBuilder> JB;
-
- llvm::Triple SystemTriple(llvm::sys::getProcessTriple());
-
- if ((SystemTriple.isOSBinFormatELF() || SystemTriple.isOSBinFormatMachO())) {
- std::string OOPExecutor = getExecutorPath();
- std::string OrcRuntimePath = getOrcRuntimePath();
- bool UseSharedMemory = false;
- std::string SlabAllocateSizeString = "";
- std::unique_ptr<llvm::orc::ExecutorProcessControl> EPC;
- EPC = ExitOnError(launchExecutor(OOPExecutor, UseSharedMemory,
- SlabAllocateSizeString,
- [=] { // Lambda defined inline
- auto redirect = [](int from, int to) {
- if (from != to) {
- dup2(from, to);
- close(from);
- }
- };
-
- redirect(0, STDIN_FILENO);
- redirect(1, STDOUT_FILENO);
- redirect(2, STDERR_FILENO);
-
- setvbuf(stdout, nullptr, _IONBF, 0);
- setvbuf(stderr, nullptr, _IONBF, 0);
- }));
- if (EPC) {
- CB.SetTargetTriple(EPC->getTargetTriple().getTriple());
- JB = ExitOnError(clang::Interpreter::createLLJITBuilder(std::move(EPC),
- OrcRuntimePath));
- }
- }
-
- return cantFail(clang::Interpreter::create(std::move(CI), std::move(JB)));
-}
-
-static size_t DeclsSize(TranslationUnitDecl *PTUDecl) {
- return std::distance(PTUDecl->decls().begin(), PTUDecl->decls().end());
-}
-
-TEST_F(InterpreterTestBase, SanityWithRemoteExecution) {
- if (!HostSupportsJIT())
- GTEST_SKIP();
-
- std::unique_ptr<Interpreter> Interp = createInterpreterWithRemoteExecution();
-
- using PTU = PartialTranslationUnit;
-
- PTU &R1(cantFail(Interp->Parse("void g(); void g() {}")));
- EXPECT_EQ(2U, DeclsSize(R1.TUPart));
-
- PTU &R2(cantFail(Interp->Parse("int i;")));
- EXPECT_EQ(1U, DeclsSize(R2.TUPart));
-}
-
-} // end anonymous namespace
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I fear it's high time for this: the existing code has way too many issues that remained unresolved.
LGTM
I've now merged this to finally unbreak the bot. |
Reverts #152562.
Seems to be causing test failures on Solaris bot.