Skip to content

Commit 1677a25

Browse files
committed
Patch mlir buffer-deallocation bug
llvm/llvm-project#121582
1 parent 2c4893d commit 1677a25

File tree

2 files changed

+23
-2
lines changed

2 files changed

+23
-2
lines changed

mlir/Makefile

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ ENZYME_BUILD_DIR?=$(MK_DIR)/Enzyme/build
1212
RT_BUILD_DIR?=$(MK_DIR)/../runtime/build
1313
ENABLE_ASAN?=OFF
1414
BUILD_TYPE?=Release
15-
TARGET_FILE=$(MK_DIR)/mlir-hlo/mhlo/transforms/CMakeLists.txt
16-
PATCH_FILE=$(MK_DIR)/patches/mhlo-Add-PassesIncGen-in-transforms-CMakeList.patch
1715
LLVM_EXTERNAL_LIT ?= $(LLVM_BUILD_DIR)/bin/llvm-lit
1816

1917
ifeq ($(shell uname), Darwin)
@@ -55,8 +53,15 @@ help:
5553
all: llvm mhlo enzyme dialects plugin
5654

5755
.PHONY: llvm
56+
llvm: TARGET_FILE := $(MK_DIR)/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/BufferDeallocation.cpp
57+
llvm: PATCH_FILE := $(MK_DIR)/patches/mlir-buffer-deallocation.patch
5858
llvm:
5959
@echo "build LLVM and MLIR enabling Python bindings"
60+
# Patch in MLIR buffer deallocation bugfix
61+
# TODO: remove once https://github.com/llvm/llvm-project/pull/121582 is merged & the dep updated
62+
@if patch --dry-run -p1 -N $(TARGET_FILE) $(PATCH_FILE) > /dev/null 2>&1; then \
63+
patch -p1 $(TARGET_FILE) $(PATCH_FILE); \
64+
fi
6065
cmake -G Ninja -S llvm-project/llvm -B $(LLVM_BUILD_DIR) \
6166
-DCMAKE_BUILD_TYPE=$(BUILD_TYPE) \
6267
-DLLVM_BUILD_EXAMPLES=OFF \
@@ -81,6 +86,8 @@ llvm:
8186
LIT_FILTER_OUT="Bytecode|tosa-to-tensor" cmake --build $(LLVM_BUILD_DIR) --target $(LLVM_TARGETS)
8287

8388
.PHONY: mhlo
89+
mhlo: TARGET_FILE := $(MK_DIR)/mlir-hlo/mhlo/transforms/CMakeLists.txt
90+
mhlo: PATCH_FILE := $(MK_DIR)/patches/mhlo-Add-PassesIncGen-in-transforms-CMakeList.patch
8491
mhlo:
8592
@echo "build MLIR-HLO"
8693
# Patch MHLO cmake dependency
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
diff --git a/mlir/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/BufferDeallocation.cpp b/mlir/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/BufferDeallocation.cpp
2+
index a0a81d4add..7b7be9e577 100644
3+
--- a/mlir/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/BufferDeallocation.cpp
4+
+++ b/mlir/llvm-project/mlir/lib/Dialect/Bufferization/Transforms/BufferDeallocation.cpp
5+
@@ -308,6 +308,9 @@ private:
6+
7+
// Add new allocs and additional clone operations.
8+
for (Value value : valuesToFree) {
9+
+ if (!isa<BaseMemRefType>(value.getType())) {
10+
+ continue;
11+
+ }
12+
if (failed(isa<BlockArgument>(value)
13+
? introduceBlockArgCopy(cast<BlockArgument>(value))
14+
: introduceValueCopyForRegionResult(value)))

0 commit comments

Comments
 (0)