[Mlir-commits] [mlir] Revert "[mlir][ExecutionEngine] Add support for global constructors and destructors" (PR #78164)

Cullen Rhodes llvmlistbot at llvm.org
Mon Jan 15 06:19:18 PST 2024


https://github.com/c-rhodes created https://github.com/llvm/llvm-project/pull/78164

this is causing test failures for me on AArch64 linux, hitting the following assert:

```
# | mlir-cpu-runner: /home/culrho01/llvm-project/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp:519: void llvm::RuntimeDyldELF::resolveAArch64Relocation(const SectionEntry &, uint64_t, uint64_t, uint32_t, int64_t): Assertion `isInt<33>(Result) && "overflow check failed for relocation"' failed.
# | PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
# | Stack dump:
# | 0.  Program arguments: /home/culrho01/llvm-project/build/bin/mlir-cpu-runner -march=aarch64 -mattr=+sve,+sme -e entry -entry-point-result=void -shared-libs=/home/culrho01/llvm-project/build/lib/libmlir_runner_utils.so,/home/culrho01/llvm-project/build/lib/libmlir_c_runner_utils.so,/home/culrho01/llvm-project/build/lib/libmlir_arm_sme_abi_stubs.so
```

Seeing the same in buildbot as well, e.g.
https://lab.llvm.org/buildbot/#/builders/179/builds/9094/steps/12/logs/FAIL__MLIR__sparse_codegen_dim_mlir

This seems related to #71963 which there's an open PR [#71968](https://github.com/llvm/llvm-project/pull/71968) for, I've tested that patch but it doesn't fix the issue.

Reverts llvm/llvm-project#78070

>From 91eb719cae57c7787af56401d2e63545cc53bc75 Mon Sep 17 00:00:00 2001
From: Cullen Rhodes <cullen.rhodes at arm.com>
Date: Mon, 15 Jan 2024 14:10:08 +0000
Subject: [PATCH] Revert "[mlir][ExecutionEngine] Add support for global
 constructors and destructors"

---
 mlir/lib/ExecutionEngine/ExecutionEngine.cpp  |  6 ----
 .../mlir-cpu-runner/global-constructors.mlir  | 32 -------------------
 2 files changed, 38 deletions(-)
 delete mode 100644 mlir/test/mlir-cpu-runner/global-constructors.mlir

diff --git a/mlir/lib/ExecutionEngine/ExecutionEngine.cpp b/mlir/lib/ExecutionEngine/ExecutionEngine.cpp
index d4ad2da045e2c4..267ec236d3fd59 100644
--- a/mlir/lib/ExecutionEngine/ExecutionEngine.cpp
+++ b/mlir/lib/ExecutionEngine/ExecutionEngine.cpp
@@ -219,9 +219,6 @@ ExecutionEngine::ExecutionEngine(bool enableObjectDump,
 }
 
 ExecutionEngine::~ExecutionEngine() {
-  // Execute the global destructors from the module being processed.
-  if (jit)
-    llvm::consumeError(jit->deinitialize(jit->getMainJITDylib()));
   // Run all dynamic library destroy callbacks to prepare for the shutdown.
   for (LibraryDestroyFn destroy : destroyFns)
     destroy();
@@ -399,9 +396,6 @@ ExecutionEngine::create(Operation *m, const ExecutionEngineOptions &options,
   };
   engine->registerSymbols(runtimeSymbolMap);
 
-  // Execute the global constructors from the module being processed.
-  cantFail(engine->jit->initialize(engine->jit->getMainJITDylib()));
-
   return std::move(engine);
 }
 
diff --git a/mlir/test/mlir-cpu-runner/global-constructors.mlir b/mlir/test/mlir-cpu-runner/global-constructors.mlir
deleted file mode 100644
index 3ebcaeccc83e32..00000000000000
--- a/mlir/test/mlir-cpu-runner/global-constructors.mlir
+++ /dev/null
@@ -1,32 +0,0 @@
-// RUN: mlir-cpu-runner %s -e entry -entry-point-result=void  \
-// RUN: -shared-libs=%mlir_c_runner_utils | \
-// RUN: FileCheck %s
-
-// Test that the `ctor` executes before `entry` and that `dtor` executes last.
-module {
-  llvm.func @printNewline()
-  llvm.func @printI64(i64)
-  llvm.mlir.global_ctors {ctors = [@ctor], priorities = [0 : i32]}
-  llvm.mlir.global_dtors {dtors = [@dtor], priorities = [0 : i32]}
-  llvm.func @ctor() {
-    %0 = llvm.mlir.constant(1 : i64) : i64
-    llvm.call @printI64(%0) : (i64) -> ()
-    llvm.call @printNewline() : () -> ()
-    // CHECK: 1
-    llvm.return
-  }
-  llvm.func @entry() {
-    %0 = llvm.mlir.constant(2 : i64) : i64
-    llvm.call @printI64(%0) : (i64) -> ()
-    llvm.call @printNewline() : () -> ()
-    // CHECK: 2
-    llvm.return
-  }
-  llvm.func @dtor() {
-    %0 = llvm.mlir.constant(3 : i64) : i64
-    llvm.call @printI64(%0) : (i64) -> ()
-    llvm.call @printNewline() : () -> ()
-    // CHECK: 3
-    llvm.return
-  }
-}



More information about the Mlir-commits mailing list