Skip to content

Revert "[Clang-Repl] Add support for out-of-process execution." #115854

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

Merged
merged 1 commit into from
Nov 12, 2024

Conversation

SahilPatidar
Copy link
Contributor

Reverts #110418

Buildbot encountered a failure.

@llvmbot llvmbot added clang Clang issues not falling into any other category clang:frontend Language frontend issues, e.g. anything involving "Sema" labels Nov 12, 2024
@llvmbot
Copy link
Member

llvmbot commented Nov 12, 2024

@llvm/pr-subscribers-clang

Author: None (SahilPatidar)

Changes

Reverts llvm/llvm-project#110418

Buildbot encountered a failure.


Patch is 26.72 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/115854.diff

8 Files Affected:

  • (modified) clang/include/clang/Interpreter/Interpreter.h (+1-6)
  • (removed) clang/include/clang/Interpreter/RemoteJITUtils.h (-38)
  • (modified) clang/lib/Interpreter/CMakeLists.txt (-1)
  • (modified) clang/lib/Interpreter/Interpreter.cpp (+8-29)
  • (removed) clang/lib/Interpreter/RemoteJITUtils.cpp (-267)
  • (removed) clang/test/Interpreter/out-of-process.cpp (-88)
  • (modified) clang/tools/clang-repl/CMakeLists.txt (-2)
  • (modified) clang/tools/clang-repl/ClangRepl.cpp (+1-122)
diff --git a/clang/include/clang/Interpreter/Interpreter.h b/clang/include/clang/Interpreter/Interpreter.h
index 42486304083f4e..1230a3a7016fae 100644
--- a/clang/include/clang/Interpreter/Interpreter.h
+++ b/clang/include/clang/Interpreter/Interpreter.h
@@ -20,7 +20,6 @@
 
 #include "llvm/ADT/DenseMap.h"
 #include "llvm/ExecutionEngine/JITSymbol.h"
-#include "llvm/ExecutionEngine/Orc/ExecutorProcessControl.h"
 #include "llvm/ExecutionEngine/Orc/Shared/ExecutorAddress.h"
 #include "llvm/Support/Error.h"
 #include <memory>
@@ -130,14 +129,10 @@ class Interpreter {
 public:
   virtual ~Interpreter();
   static llvm::Expected<std::unique_ptr<Interpreter>>
-  create(std::unique_ptr<CompilerInstance> CI,
-         std::unique_ptr<llvm::orc::LLJITBuilder> JITBuilder = nullptr);
+  create(std::unique_ptr<CompilerInstance> CI);
   static llvm::Expected<std::unique_ptr<Interpreter>>
   createWithCUDA(std::unique_ptr<CompilerInstance> CI,
                  std::unique_ptr<CompilerInstance> DCI);
-  static llvm::Expected<std::unique_ptr<llvm::orc::LLJITBuilder>>
-  createLLJITBuilder(std::unique_ptr<llvm::orc::ExecutorProcessControl> EPC,
-                     llvm::StringRef OrcRuntimePath);
   const ASTContext &getASTContext() const;
   ASTContext &getASTContext();
   const CompilerInstance *getCompilerInstance() const;
diff --git a/clang/include/clang/Interpreter/RemoteJITUtils.h b/clang/include/clang/Interpreter/RemoteJITUtils.h
deleted file mode 100644
index 8705a3b1f669de..00000000000000
--- a/clang/include/clang/Interpreter/RemoteJITUtils.h
+++ /dev/null
@@ -1,38 +0,0 @@
-//===-- RemoteJITUtils.h - Utilities for remote-JITing ----------*- C++ -*-===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-//
-// Utilities for ExecutorProcessControl-based remote JITing with Orc and
-// JITLink.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_INTERPRETER_REMOTEJITUTILS_H
-#define LLVM_CLANG_INTERPRETER_REMOTEJITUTILS_H
-
-#include "llvm/ADT/StringRef.h"
-#include "llvm/ExecutionEngine/Orc/Core.h"
-#include "llvm/ExecutionEngine/Orc/Layer.h"
-#include "llvm/ExecutionEngine/Orc/SimpleRemoteEPC.h"
-#include "llvm/Support/Error.h"
-
-#include <cstdint>
-#include <memory>
-#include <string>
-
-llvm::Expected<std::unique_ptr<llvm::orc::SimpleRemoteEPC>>
-launchExecutor(llvm::StringRef ExecutablePath, bool UseSharedMemory,
-               llvm::StringRef SlabAllocateSizeString);
-
-/// Create a JITLinkExecutor that connects to the given network address
-/// through a TCP socket. A valid NetworkAddress provides hostname and port,
-/// e.g. localhost:20000.
-llvm::Expected<std::unique_ptr<llvm::orc::SimpleRemoteEPC>>
-connectTCPSocket(llvm::StringRef NetworkAddress, bool UseSharedMemory,
-                 llvm::StringRef SlabAllocateSizeString);
-
-#endif // LLVM_CLANG_INTERPRETER_REMOTEJITUTILS_H
diff --git a/clang/lib/Interpreter/CMakeLists.txt b/clang/lib/Interpreter/CMakeLists.txt
index eb99e316ebc0a7..d5ffe78251d253 100644
--- a/clang/lib/Interpreter/CMakeLists.txt
+++ b/clang/lib/Interpreter/CMakeLists.txt
@@ -25,7 +25,6 @@ add_clang_library(clangInterpreter
   Interpreter.cpp
   InterpreterValuePrinter.cpp
   InterpreterUtils.cpp
-  RemoteJITUtils.cpp
   Value.cpp
   ${WASM_SRC}
   PARTIAL_SOURCES_INTENDED
diff --git a/clang/lib/Interpreter/Interpreter.cpp b/clang/lib/Interpreter/Interpreter.cpp
index 8eacbc6b713a19..bc96da811d44cb 100644
--- a/clang/lib/Interpreter/Interpreter.cpp
+++ b/clang/lib/Interpreter/Interpreter.cpp
@@ -44,7 +44,6 @@
 #include "clang/Sema/Lookup.h"
 #include "clang/Serialization/ObjectFilePCHContainerReader.h"
 #include "llvm/ExecutionEngine/JITSymbol.h"
-#include "llvm/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.h"
 #include "llvm/ExecutionEngine/Orc/LLJIT.h"
 #include "llvm/IR/Module.h"
 #include "llvm/Support/Errc.h"
@@ -457,11 +456,10 @@ const char *const Runtimes = R"(
 )";
 
 llvm::Expected<std::unique_ptr<Interpreter>>
-Interpreter::create(std::unique_ptr<CompilerInstance> CI,
-                    std::unique_ptr<llvm::orc::LLJITBuilder> JB) {
+Interpreter::create(std::unique_ptr<CompilerInstance> CI) {
   llvm::Error Err = llvm::Error::success();
-  auto Interp = std::unique_ptr<Interpreter>(
-      new Interpreter(std::move(CI), Err, JB ? std::move(JB) : nullptr));
+  auto Interp =
+      std::unique_ptr<Interpreter>(new Interpreter(std::move(CI), Err));
   if (Err)
     return std::move(Err);
 
@@ -580,25 +578,6 @@ createJITTargetMachineBuilder(const std::string &TT) {
   return llvm::orc::JITTargetMachineBuilder(llvm::Triple(TT));
 }
 
-llvm::Expected<std::unique_ptr<llvm::orc::LLJITBuilder>>
-Interpreter::createLLJITBuilder(
-    std::unique_ptr<llvm::orc::ExecutorProcessControl> EPC,
-    llvm::StringRef OrcRuntimePath) {
-  const std::string &TT = EPC->getTargetTriple().getTriple();
-  auto JTMB = createJITTargetMachineBuilder(TT);
-  if (!JTMB)
-    return JTMB.takeError();
-  auto JB = IncrementalExecutor::createDefaultJITBuilder(std::move(*JTMB));
-  if (!JB)
-    return JB.takeError();
-
-  (*JB)->setExecutorProcessControl(std::move(EPC));
-  (*JB)->setPlatformSetUp(
-      llvm::orc::ExecutorNativePlatform(OrcRuntimePath.str()));
-
-  return std::move(*JB);
-}
-
 llvm::Error Interpreter::CreateExecutor() {
   if (IncrExecutor)
     return llvm::make_error<llvm::StringError>("Operation failed. "
@@ -723,11 +702,11 @@ llvm::Error Interpreter::LoadDynamicLibrary(const char *name) {
   if (!EE)
     return EE.takeError();
 
-  if (auto DLSG = llvm::orc::EPCDynamicLibrarySearchGenerator::Load(
-          EE->getExecutionSession(), name))
-    // FIXME: Eventually we should put each library in its own JITDylib and
-    //        turn off process symbols by default.
-    EE->getProcessSymbolsJITDylib()->addGenerator(std::move(*DLSG));
+  auto &DL = EE->getDataLayout();
+
+  if (auto DLSG = llvm::orc::DynamicLibrarySearchGenerator::Load(
+          name, DL.getGlobalPrefix()))
+    EE->getMainJITDylib().addGenerator(std::move(*DLSG));
   else
     return DLSG.takeError();
 
diff --git a/clang/lib/Interpreter/RemoteJITUtils.cpp b/clang/lib/Interpreter/RemoteJITUtils.cpp
deleted file mode 100644
index 24a5f729f2dcbc..00000000000000
--- a/clang/lib/Interpreter/RemoteJITUtils.cpp
+++ /dev/null
@@ -1,267 +0,0 @@
-//===-- RemoteJITUtils.cpp - Utilities for remote-JITing --------*- C++ -*-===//
-//
-// 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
-//
-//===----------------------------------------------------------------------===//
-//
-// FIXME: Unify this code with similar functionality in llvm-jitlink.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/Interpreter/RemoteJITUtils.h"
-
-#include "llvm/ADT/StringExtras.h"
-#include "llvm/ExecutionEngine/Orc/DebugObjectManagerPlugin.h"
-#include "llvm/ExecutionEngine/Orc/EPCDebugObjectRegistrar.h"
-#include "llvm/ExecutionEngine/Orc/EPCDynamicLibrarySearchGenerator.h"
-#include "llvm/ExecutionEngine/Orc/MapperJITLinkMemoryManager.h"
-#include "llvm/ExecutionEngine/Orc/Shared/OrcRTBridge.h"
-#include "llvm/ExecutionEngine/Orc/Shared/SimpleRemoteEPCUtils.h"
-#include "llvm/ExecutionEngine/Orc/TargetProcess/JITLoaderGDB.h"
-#include "llvm/Support/FileSystem.h"
-#include "llvm/Support/Path.h"
-
-#ifdef LLVM_ON_UNIX
-#include <netdb.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
-#include <unistd.h>
-#endif // LLVM_ON_UNIX
-
-using namespace llvm;
-using namespace llvm::orc;
-
-Expected<uint64_t> getSlabAllocSize(StringRef SizeString) {
-  SizeString = SizeString.trim();
-
-  uint64_t Units = 1024;
-
-  if (SizeString.ends_with_insensitive("kb"))
-    SizeString = SizeString.drop_back(2).rtrim();
-  else if (SizeString.ends_with_insensitive("mb")) {
-    Units = 1024 * 1024;
-    SizeString = SizeString.drop_back(2).rtrim();
-  } else if (SizeString.ends_with_insensitive("gb")) {
-    Units = 1024 * 1024 * 1024;
-    SizeString = SizeString.drop_back(2).rtrim();
-  }
-
-  uint64_t SlabSize = 0;
-  if (SizeString.getAsInteger(10, SlabSize))
-    return make_error<StringError>("Invalid numeric format for slab size",
-                                   inconvertibleErrorCode());
-
-  return SlabSize * Units;
-}
-
-Expected<std::unique_ptr<jitlink::JITLinkMemoryManager>>
-createSharedMemoryManager(SimpleRemoteEPC &SREPC,
-                          StringRef SlabAllocateSizeString) {
-  SharedMemoryMapper::SymbolAddrs SAs;
-  if (auto Err = SREPC.getBootstrapSymbols(
-          {{SAs.Instance, rt::ExecutorSharedMemoryMapperServiceInstanceName},
-           {SAs.Reserve,
-            rt::ExecutorSharedMemoryMapperServiceReserveWrapperName},
-           {SAs.Initialize,
-            rt::ExecutorSharedMemoryMapperServiceInitializeWrapperName},
-           {SAs.Deinitialize,
-            rt::ExecutorSharedMemoryMapperServiceDeinitializeWrapperName},
-           {SAs.Release,
-            rt::ExecutorSharedMemoryMapperServiceReleaseWrapperName}}))
-    return std::move(Err);
-
-#ifdef _WIN32
-  size_t SlabSize = 1024 * 1024;
-#else
-  size_t SlabSize = 1024 * 1024 * 1024;
-#endif
-
-  if (!SlabAllocateSizeString.empty()) {
-    if (auto S = getSlabAllocSize(SlabAllocateSizeString))
-      SlabSize = *S;
-    else
-      return S.takeError();
-  }
-
-  return MapperJITLinkMemoryManager::CreateWithMapper<SharedMemoryMapper>(
-      SlabSize, SREPC, SAs);
-}
-
-Expected<std::unique_ptr<SimpleRemoteEPC>>
-launchExecutor(StringRef ExecutablePath, bool UseSharedMemory,
-               llvm::StringRef SlabAllocateSizeString) {
-#ifndef LLVM_ON_UNIX
-  // FIXME: Add support for Windows.
-  return make_error<StringError>("-" + ExecutablePath +
-                                     " not supported on non-unix platforms",
-                                 inconvertibleErrorCode());
-#elif !LLVM_ENABLE_THREADS
-  // Out of process mode using SimpleRemoteEPC depends on threads.
-  return make_error<StringError>(
-      "-" + ExecutablePath +
-          " requires threads, but LLVM was built with "
-          "LLVM_ENABLE_THREADS=Off",
-      inconvertibleErrorCode());
-#else
-
-  if (!sys::fs::can_execute(ExecutablePath))
-    return make_error<StringError>(
-        formatv("Specified executor invalid: {0}", ExecutablePath),
-        inconvertibleErrorCode());
-
-  constexpr int ReadEnd = 0;
-  constexpr int WriteEnd = 1;
-
-  // Pipe FDs.
-  int ToExecutor[2];
-  int FromExecutor[2];
-
-  pid_t ChildPID;
-
-  // Create pipes to/from the executor..
-  if (pipe(ToExecutor) != 0 || pipe(FromExecutor) != 0)
-    return make_error<StringError>("Unable to create pipe for executor",
-                                   inconvertibleErrorCode());
-
-  ChildPID = fork();
-
-  if (ChildPID == 0) {
-    // In the child...
-
-    // Close the parent ends of the pipes
-    close(ToExecutor[WriteEnd]);
-    close(FromExecutor[ReadEnd]);
-
-    // Execute the child process.
-    std::unique_ptr<char[]> ExecutorPath, FDSpecifier;
-    {
-      ExecutorPath = std::make_unique<char[]>(ExecutablePath.size() + 1);
-      strcpy(ExecutorPath.get(), ExecutablePath.data());
-
-      std::string FDSpecifierStr("filedescs=");
-      FDSpecifierStr += utostr(ToExecutor[ReadEnd]);
-      FDSpecifierStr += ',';
-      FDSpecifierStr += utostr(FromExecutor[WriteEnd]);
-      FDSpecifier = std::make_unique<char[]>(FDSpecifierStr.size() + 1);
-      strcpy(FDSpecifier.get(), FDSpecifierStr.c_str());
-    }
-
-    char *const Args[] = {ExecutorPath.get(), FDSpecifier.get(), nullptr};
-    int RC = execvp(ExecutorPath.get(), Args);
-    if (RC != 0) {
-      errs() << "unable to launch out-of-process executor \""
-             << ExecutorPath.get() << "\"\n";
-      exit(1);
-    }
-  }
-  // else we're the parent...
-
-  // Close the child ends of the pipes
-  close(ToExecutor[ReadEnd]);
-  close(FromExecutor[WriteEnd]);
-
-  auto S = SimpleRemoteEPC::Setup();
-  if (UseSharedMemory)
-    S.CreateMemoryManager = [SlabAllocateSizeString](SimpleRemoteEPC &EPC) {
-      return createSharedMemoryManager(EPC, SlabAllocateSizeString);
-    };
-
-  return SimpleRemoteEPC::Create<FDSimpleRemoteEPCTransport>(
-      std::make_unique<DynamicThreadPoolTaskDispatcher>(std::nullopt),
-      std::move(S), FromExecutor[ReadEnd], ToExecutor[WriteEnd]);
-#endif
-}
-
-#if LLVM_ON_UNIX && LLVM_ENABLE_THREADS
-
-static Expected<int> connectTCPSocketImpl(std::string Host,
-                                          std::string PortStr) {
-  addrinfo *AI;
-  addrinfo Hints{};
-  Hints.ai_family = AF_INET;
-  Hints.ai_socktype = SOCK_STREAM;
-  Hints.ai_flags = AI_NUMERICSERV;
-
-  if (int EC = getaddrinfo(Host.c_str(), PortStr.c_str(), &Hints, &AI))
-    return make_error<StringError>(
-        formatv("address resolution failed ({0})", gai_strerror(EC)),
-        inconvertibleErrorCode());
-  // Cycle through the returned addrinfo structures and connect to the first
-  // reachable endpoint.
-  int SockFD;
-  addrinfo *Server;
-  for (Server = AI; Server != nullptr; Server = Server->ai_next) {
-    // socket might fail, e.g. if the address family is not supported. Skip to
-    // the next addrinfo structure in such a case.
-    if ((SockFD = socket(AI->ai_family, AI->ai_socktype, AI->ai_protocol)) < 0)
-      continue;
-
-    // If connect returns null, we exit the loop with a working socket.
-    if (connect(SockFD, Server->ai_addr, Server->ai_addrlen) == 0)
-      break;
-
-    close(SockFD);
-  }
-  freeaddrinfo(AI);
-
-  // If we reached the end of the loop without connecting to a valid endpoint,
-  // dump the last error that was logged in socket() or connect().
-  if (Server == nullptr)
-    return make_error<StringError>("invalid hostname",
-                                   inconvertibleErrorCode());
-
-  return SockFD;
-}
-#endif
-
-Expected<std::unique_ptr<SimpleRemoteEPC>>
-connectTCPSocket(StringRef NetworkAddress, bool UseSharedMemory,
-                 llvm::StringRef SlabAllocateSizeString) {
-#ifndef LLVM_ON_UNIX
-  // FIXME: Add TCP support for Windows.
-  return make_error<StringError>("-" + NetworkAddress +
-                                     " not supported on non-unix platforms",
-                                 inconvertibleErrorCode());
-#elif !LLVM_ENABLE_THREADS
-  // Out of process mode using SimpleRemoteEPC depends on threads.
-  return make_error<StringError>(
-      "-" + NetworkAddress +
-          " requires threads, but LLVM was built with "
-          "LLVM_ENABLE_THREADS=Off",
-      inconvertibleErrorCode());
-#else
-
-  auto CreateErr = [NetworkAddress](Twine Details) {
-    return make_error<StringError>(
-        formatv("Failed to connect TCP socket '{0}': {1}", NetworkAddress,
-                Details),
-        inconvertibleErrorCode());
-  };
-
-  StringRef Host, PortStr;
-  std::tie(Host, PortStr) = NetworkAddress.split(':');
-  if (Host.empty())
-    return CreateErr("Host name for -" + NetworkAddress + " can not be empty");
-  if (PortStr.empty())
-    return CreateErr("Port number in -" + NetworkAddress + " can not be empty");
-  int Port = 0;
-  if (PortStr.getAsInteger(10, Port))
-    return CreateErr("Port number '" + PortStr + "' is not a valid integer");
-
-  Expected<int> SockFD = connectTCPSocketImpl(Host.str(), PortStr.str());
-  if (!SockFD)
-    return SockFD.takeError();
-
-  auto S = SimpleRemoteEPC::Setup();
-  if (UseSharedMemory)
-    S.CreateMemoryManager = [SlabAllocateSizeString](SimpleRemoteEPC &EPC) {
-      return createSharedMemoryManager(EPC, SlabAllocateSizeString);
-    };
-
-  return SimpleRemoteEPC::Create<FDSimpleRemoteEPCTransport>(
-      std::make_unique<DynamicThreadPoolTaskDispatcher>(std::nullopt),
-      std::move(S), *SockFD, *SockFD);
-#endif
-}
diff --git a/clang/test/Interpreter/out-of-process.cpp b/clang/test/Interpreter/out-of-process.cpp
deleted file mode 100644
index 372750b20b470c..00000000000000
--- a/clang/test/Interpreter/out-of-process.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-// REQUIRES: host-supports-jit
-
-// RUN: cat %s | clang-repl -oop-executor -orc-runtime | FileCheck %s
-
-extern "C" int printf(const char *, ...);
-
-int intVar = 0;
-double doubleVar = 3.14;
-%undo
-double doubleVar = 2.71;
-
-auto r1 = printf("intVar = %d\n", intVar);
-// CHECK: intVar = 0
-auto r2 = printf("doubleVar = %.2f\n", doubleVar);
-// CHECK: doubleVar = 2.71
-
-// Test redefinition with inline and static functions.
-int add(int a, int b, int c) { return a + b + c; }
-%undo  // Revert to the initial version of add
-inline int add(int a, int b) { return a + b; }
-
-auto r3 = printf("add(1, 2) = %d\n", add(1, 2));
-// CHECK-NEXT: add(1, 2) = 3
-
-// Test inline and lambda functions with variations.
-inline int square(int x) { return x * x; }
-auto lambdaSquare = [](int x) { return x * x; };
-auto lambdaMult = [](int a, int b) { return a * b; };
-
-auto r4 = printf("square(4) = %d\n", square(4));
-// CHECK-NEXT: square(4) = 16
-auto lambda_r1 = printf("lambdaSquare(5) = %d\n", lambdaSquare(5));
-// CHECK-NEXT: lambdaSquare(5) = 25
-auto lambda_r2 = printf("lambdaMult(2, 3) = %d\n", lambdaMult(2, 3));
-// CHECK-NEXT: lambdaMult(2, 3) = 6
-
-%undo  // Undo previous lambda assignments
-auto lambda_r3 = lambdaMult(3, 4);  // Should fail or revert to the original lambda
-
-// Test weak and strong symbol linkage.
-int __attribute__((weak)) weakFunc() { return 42; }
-int strongFunc() { return 100; }
-%undo  // Revert the weak function
-
-auto r5 = printf("weakFunc() = %d\n", weakFunc());
-// CHECK: weakFunc() = 42
-auto r6 = printf("strongFunc() = %d\n", strongFunc());
-// CHECK-NEXT: strongFunc() = 100
-
-// Weak variable linkage with different types.
-int varA = 20;
-static __typeof(varA) weakVarA __attribute__((__weakref__("varA")));
-char charVar = 'c';
-static __typeof(charVar) weakCharVar __attribute__((__weakref__("charVar")));
-auto r7 = printf("weakVarA = %d\n", weakVarA);
-// CHECK: weakVarA = 20
-auto r8 = printf("weakCharVar = %c\n", weakCharVar);
-// CHECK-NEXT: weakCharVar = c
-
-// Test complex lambdas with captures.
-int captureVar = 5;
-auto captureLambda = [](int x) { return x + captureVar; };
-int result1 = captureLambda(10);
-%undo  // Undo capture lambda
-
-auto r9 = printf("captureLambda(10) = %d\n", result1);
-// CHECK: captureLambda(10) = 15
-
-// Multiline statement test with arithmetic operations.
-int sum = \
-  5 + \
-  10;
-int prod = sum * 2;
-auto r10 = printf("sum = %d, prod = %d\n", sum, prod);
-// CHECK: sum = 15, prod = 30
-
-// Test multiline functions and macro behavior.
-#define MULTIPLY(a, b) ((a) * (b))
-
-int complexFunc(int x) \
-{ \
-  return MULTIPLY(x, 2) + x; \
-}
-
-auto r11 = printf("complexFunc(5) = %d\n", complexFunc(5));
-// CHECK: complexFunc(5) = 15
-
-%quit
diff --git a/clang/tools/clang-repl/CMakeLists.txt b/clang/tools/clang-repl/CMakeLists.txt
index 11164e3b8f5c65..7aebbe7a19436a 100644
--- a/clang/tools/clang-repl/CMakeLists.txt
+++ b/clang/tools/clang-repl/CMakeLists.txt
@@ -4,9 +4,7 @@ set( LLVM_LINK_COMPONENTS
   LineEditor
   Option
   OrcJIT
-  OrcShared
   Support
-  TargetParser
   )
 
 add_clang_tool(clang-repl
diff --git a/clang/tools/clang-repl/ClangRepl.cpp b/clang/tools/clang-repl/ClangRepl.cpp
index b9b07b78978092..08c54e6cafa901 100644
--- a/clang/tools/clang-repl/ClangRepl.cpp
+++ b/clang/tools/clang-repl/ClangRepl.cpp
@@ -10,11 +10,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "clang/Interpreter/RemoteJITUtils.h"
-
 #include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/Version.h"
-#include "clang/Config/config.h"
 #include "clang/Frontend/CompilerInstance.h"
 #include "clang/Frontend/FrontendDiagnostic.h"
 #include "clang/Interpreter/CodeCompletion.h"
@@ -28,11 +24,8 @@
 #include "llvm/Support/ManagedStatic.h" // llvm_shutdown
 #include "llvm/Support/Signals.h"
 #include "llvm/Support/TargetSelect.h"
-#include "llvm/TargetParser/Host.h"
 #include <optional>
 
-#include "llvm/ExecutionEngine/Orc/Debugging/DebuggerSupport.h"
-
 // Disable LSan for this test.
 // FIXME: Re-enable onc...
[truncated]

@SahilPatidar SahilPatidar merged commit ebb3508 into main Nov 12, 2024
8 of 10 checks passed
@SahilPatidar SahilPatidar deleted the revert-110418-clang-repl branch November 12, 2024 11:21
@llvm-ci
Copy link
Collaborator

llvm-ci commented Nov 12, 2024

LLVM Buildbot has detected a new failure on builder libc-x86_64-debian-dbg-asan running on libc-x86_64-debian while building clang at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/147/builds/9775

Here is the relevant piece of the build log for the reference
Step 4 (annotate) failure: 'python ../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py ...' (failure)
...
[       OK ] LlvmLibcSysStatvfsTest.StatvfsInvalidPath (117 us)
Ran 2 tests.  PASS: 2  FAIL: 0
[916/981] Running unit test libc.test.src.sys.stat.fstat_test
[==========] Running 2 tests from 1 test suite.
[ RUN      ] LlvmLibcFStatTest.CreatAndReadMode
[       OK ] LlvmLibcFStatTest.CreatAndReadMode (70 us)
[ RUN      ] LlvmLibcFStatTest.NonExistentFile
[       OK ] LlvmLibcFStatTest.NonExistentFile (5 us)
Ran 2 tests.  PASS: 2  FAIL: 0
[917/981] Running unit test libc.test.src.sys.statvfs.linux.fstatvfs_test
FAILED: projects/libc/test/src/sys/statvfs/linux/CMakeFiles/libc.test.src.sys.statvfs.linux.fstatvfs_test /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-asan/build/projects/libc/test/src/sys/statvfs/linux/CMakeFiles/libc.test.src.sys.statvfs.linux.fstatvfs_test 
cd /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-asan/build/projects/libc/test/src/sys/statvfs/linux && /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-asan/build/projects/libc/test/src/sys/statvfs/linux/libc.test.src.sys.statvfs.linux.fstatvfs_test.__build__
[==========] Running 2 tests from 1 test suite.
[ RUN      ] LlvmLibcSysFStatvfsTest.FStatvfsBasic
[       OK ] LlvmLibcSysFStatvfsTest.FStatvfsBasic (20 us)
[ RUN      ] LlvmLibcSysFStatvfsTest.FStatvfsInvalidPath
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-asan/llvm-project/libc/test/src/sys/statvfs/linux/fstatvfs_test.cpp:40: FAILURE
Failed to match LIBC_NAMESPACE::mkdirat(AT_FDCWD, TEST_DIR, S_IRWXU) against Succeeds(0).
Expected return value to be equal to 0 but got -1.
Expected errno to be equal to "Success" but got "File exists".
[  FAILED  ] LlvmLibcSysFStatvfsTest.FStatvfsInvalidPath
Ran 2 tests.  PASS: 1  FAIL: 1
[918/981] Running unit test libc.test.src.sys.utsname.uname_test
[==========] Running 1 test from 1 test suite.
[ RUN      ] LlvmLibcUnameTest.GetMachineName
[       OK ] LlvmLibcUnameTest.GetMachineName (17 us)
Ran 1 tests.  PASS: 1  FAIL: 0
[919/981] Running unit test libc.test.src.sys.stat.mkdirat_test
[==========] Running 2 tests from 1 test suite.
[ RUN      ] LlvmLibcMkdiratTest.CreateAndRemove
[       OK ] LlvmLibcMkdiratTest.CreateAndRemove (185 us)
[ RUN      ] LlvmLibcMkdiratTest.BadPath
[       OK ] LlvmLibcMkdiratTest.BadPath (6 us)
Ran 2 tests.  PASS: 2  FAIL: 0
[920/981] Running unit test libc.test.src.sys.stat.chmod_test
[==========] Running 2 tests from 1 test suite.
[ RUN      ] LlvmLibcChmodTest.ChangeAndOpen
[       OK ] LlvmLibcChmodTest.ChangeAndOpen (67 us)
[ RUN      ] LlvmLibcChmodTest.NonExistentFile
[       OK ] LlvmLibcChmodTest.NonExistentFile (5 us)
Ran 2 tests.  PASS: 2  FAIL: 0
[921/981] Running unit test libc.test.src.sys.stat.lstat_test
[==========] Running 2 tests from 1 test suite.
[ RUN      ] LlvmLibcLStatTest.CreatAndReadMode
[       OK ] LlvmLibcLStatTest.CreatAndReadMode (74 us)
[ RUN      ] LlvmLibcLStatTest.NonExistentFile
[       OK ] LlvmLibcLStatTest.NonExistentFile (5 us)
Ran 2 tests.  PASS: 2  FAIL: 0
[922/981] Running unit test libc.test.src.sys.stat.stat_test
Step 7 (libc-unit-tests) failure: libc-unit-tests (failure)
...
[       OK ] LlvmLibcSysStatvfsTest.StatvfsInvalidPath (117 us)
Ran 2 tests.  PASS: 2  FAIL: 0
[916/981] Running unit test libc.test.src.sys.stat.fstat_test
[==========] Running 2 tests from 1 test suite.
[ RUN      ] LlvmLibcFStatTest.CreatAndReadMode
[       OK ] LlvmLibcFStatTest.CreatAndReadMode (70 us)
[ RUN      ] LlvmLibcFStatTest.NonExistentFile
[       OK ] LlvmLibcFStatTest.NonExistentFile (5 us)
Ran 2 tests.  PASS: 2  FAIL: 0
[917/981] Running unit test libc.test.src.sys.statvfs.linux.fstatvfs_test
FAILED: projects/libc/test/src/sys/statvfs/linux/CMakeFiles/libc.test.src.sys.statvfs.linux.fstatvfs_test /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-asan/build/projects/libc/test/src/sys/statvfs/linux/CMakeFiles/libc.test.src.sys.statvfs.linux.fstatvfs_test 
cd /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-asan/build/projects/libc/test/src/sys/statvfs/linux && /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-asan/build/projects/libc/test/src/sys/statvfs/linux/libc.test.src.sys.statvfs.linux.fstatvfs_test.__build__
[==========] Running 2 tests from 1 test suite.
[ RUN      ] LlvmLibcSysFStatvfsTest.FStatvfsBasic
[       OK ] LlvmLibcSysFStatvfsTest.FStatvfsBasic (20 us)
[ RUN      ] LlvmLibcSysFStatvfsTest.FStatvfsInvalidPath
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian/libc-x86_64-debian-dbg-asan/llvm-project/libc/test/src/sys/statvfs/linux/fstatvfs_test.cpp:40: FAILURE
Failed to match LIBC_NAMESPACE::mkdirat(AT_FDCWD, TEST_DIR, S_IRWXU) against Succeeds(0).
Expected return value to be equal to 0 but got -1.
Expected errno to be equal to "Success" but got "File exists".
[  FAILED  ] LlvmLibcSysFStatvfsTest.FStatvfsInvalidPath
Ran 2 tests.  PASS: 1  FAIL: 1
[918/981] Running unit test libc.test.src.sys.utsname.uname_test
[==========] Running 1 test from 1 test suite.
[ RUN      ] LlvmLibcUnameTest.GetMachineName
[       OK ] LlvmLibcUnameTest.GetMachineName (17 us)
Ran 1 tests.  PASS: 1  FAIL: 0
[919/981] Running unit test libc.test.src.sys.stat.mkdirat_test
[==========] Running 2 tests from 1 test suite.
[ RUN      ] LlvmLibcMkdiratTest.CreateAndRemove
[       OK ] LlvmLibcMkdiratTest.CreateAndRemove (185 us)
[ RUN      ] LlvmLibcMkdiratTest.BadPath
[       OK ] LlvmLibcMkdiratTest.BadPath (6 us)
Ran 2 tests.  PASS: 2  FAIL: 0
[920/981] Running unit test libc.test.src.sys.stat.chmod_test
[==========] Running 2 tests from 1 test suite.
[ RUN      ] LlvmLibcChmodTest.ChangeAndOpen
[       OK ] LlvmLibcChmodTest.ChangeAndOpen (67 us)
[ RUN      ] LlvmLibcChmodTest.NonExistentFile
[       OK ] LlvmLibcChmodTest.NonExistentFile (5 us)
Ran 2 tests.  PASS: 2  FAIL: 0
[921/981] Running unit test libc.test.src.sys.stat.lstat_test
[==========] Running 2 tests from 1 test suite.
[ RUN      ] LlvmLibcLStatTest.CreatAndReadMode
[       OK ] LlvmLibcLStatTest.CreatAndReadMode (74 us)
[ RUN      ] LlvmLibcLStatTest.NonExistentFile
[       OK ] LlvmLibcLStatTest.NonExistentFile (5 us)
Ran 2 tests.  PASS: 2  FAIL: 0
[922/981] Running unit test libc.test.src.sys.stat.stat_test

@TomWeaver18
Copy link
Contributor

Thanks for the revert 👍

Groverkss pushed a commit to iree-org/llvm-project that referenced this pull request Nov 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:frontend Language frontend issues, e.g. anything involving "Sema" clang Clang issues not falling into any other category
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants