mirror of
https://github.com/intel/llvm.git
synced 2026-01-26 21:53:12 +08:00
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 095e6ac9fd.
This commit is contained in:
@@ -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 =
|
||||
|
||||
@@ -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>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user