[Mlir-commits] [mlir] 35eb57d - Revert "[mlir] Fix memory explosion when converting global variable bodies in ModuleTranslation"

Kiran Chandramohan llvmlistbot at llvm.org
Fri May 19 04:41:18 PDT 2023


Author: Kiran Chandramohan
Date: 2023-05-19T11:33:46Z
New Revision: 35eb57dea527b27f3feccb0bfba1b0c2e0d19f70

URL: https://github.com/llvm/llvm-project/commit/35eb57dea527b27f3feccb0bfba1b0c2e0d19f70
DIFF: https://github.com/llvm/llvm-project/commit/35eb57dea527b27f3feccb0bfba1b0c2e0d19f70.diff

LOG: Revert "[mlir] Fix memory explosion when converting global variable bodies in ModuleTranslation"

Reverting due to failure in spec cam4 benchmark. See github issue
https://github.com/llvm/llvm-project/issues/62802 for details.

This reverts commit 095e6ac9fd92d03dcb1e19b60cb06a8140aae69d.

Added: 
    

Modified: 
    mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
    mlir/test/Target/LLVMIR/llvmir.mlir

Removed: 
    


################################################################################
diff  --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
index 864095fa34647..ca52b59641cec 100644
--- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
@@ -741,22 +741,6 @@ LogicalResult ModuleTranslation::convertGlobals() {
         if (failed(convertOperation(op, builder)) ||
             !isa<llvm::Constant>(lookupValue(op.getResult(0))))
           return emitError(op.getLoc(), "unemittable constant value");
-        // When emitting an LLVM constant, a new constant is created and the old
-        // constant may become dangling and take space. We should remove the
-        // dangling constants to avoid memory explosion especially for constant
-        // arrays whose number of elements is large.
-        // TODO: handle ops other than InsertValueOp with ConstantArray.
-        if (auto ivOp = dyn_cast<LLVM::InsertValueOp>(op)) {
-          Value container = ivOp.getContainer();
-          if (auto cst =
-                  dyn_cast<llvm::ConstantArray>(lookupValue(container))) {
-            // GlobalValue shouldn't be treated like other constants.
-            if (isa<llvm::GlobalValue>(cst))
-              continue;
-            if (cst->hasZeroLiveUses())
-              cst->destroyConstant();
-          }
-        }
       }
       ReturnOp ret = cast<ReturnOp>(initializer->getTerminator());
       llvm::Constant *cst =

diff  --git a/mlir/test/Target/LLVMIR/llvmir.mlir b/mlir/test/Target/LLVMIR/llvmir.mlir
index b950128b17c06..6d340bc57fcd1 100644
--- a/mlir/test/Target/LLVMIR/llvmir.mlir
+++ b/mlir/test/Target/LLVMIR/llvmir.mlir
@@ -53,15 +53,6 @@ llvm.mlir.global internal constant @int_gep() : !llvm.ptr<i32> {
   llvm.return %gepinit : !llvm.ptr<i32>
 }
 
-// CHECK: @string_array = internal constant [1 x ptr] [ptr @string_const]
-llvm.mlir.global internal constant @string_array() : !llvm.array<1 x ptr<i8>> {
-    %0 = llvm.mlir.undef : !llvm.array<1 x ptr<i8>>
-    %1 = llvm.mlir.addressof @string_const: !llvm.ptr<array<6 x i8>>
-    %2 = llvm.getelementptr %1[0, 0] : (!llvm.ptr<array<6 x i8>>) -> !llvm.ptr<i8>
-    %3 = llvm.insertvalue %2, %0[0] : !llvm.array<1 x ptr<i8>>
-    llvm.return %3 : !llvm.array<1 x ptr<i8>>
-}
-
 // CHECK{LITERAL}: @dense_float_vector = internal global <3 x float> <float 1.000000e+00, float 2.000000e+00, float 3.000000e+00>
 llvm.mlir.global internal @dense_float_vector(dense<[1.0, 2.0, 3.0]> : vector<3xf32>) : vector<3xf32>
 


        


More information about the Mlir-commits mailing list