[llvm] 89a99ec - [GVN] Bug fix to reportMayClobberedLoad remark
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 6 17:42:35 PDT 2022
Author: Vir Narula
Date: 2022-07-06T17:42:05-07:00
New Revision: 89a99ec900d50d579629083c6400d24bd6ef6dab
URL: https://github.com/llvm/llvm-project/commit/89a99ec900d50d579629083c6400d24bd6ef6dab
DIFF: https://github.com/llvm/llvm-project/commit/89a99ec900d50d579629083c6400d24bd6ef6dab.diff
LOG: [GVN] Bug fix to reportMayClobberedLoad remark
Bug fix to avoid assert crashing when generating remarks for GVN crashing.
Intention of assert is correct but ignores edge case of instructions being equivalent.
Reduced input that causes crash when remarks are turned on:
```
target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
target triple = "arm64-apple-macosx12.0.0"
define ptr @ReplaceWithTidy(ptr %zz_hold) {
cond.end480.us:
%0 = load ptr, ptr null, align 8
store ptr %0, ptr %0, align 8
store ptr null, ptr %zz_hold, align 8
%1 = load ptr, ptr %0, align 8
store ptr %1, ptr null, align 8
ret ptr null
}
```
Reviewed By: fhahn
Differential Revision: https://reviews.llvm.org/D129235
Added:
llvm/test/Transforms/GVN/remarks-selfdomination.ll
Modified:
llvm/lib/Transforms/Scalar/GVN.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Scalar/GVN.cpp b/llvm/lib/Transforms/Scalar/GVN.cpp
index 783301fe589ea..913034f0c8305 100644
--- a/llvm/lib/Transforms/Scalar/GVN.cpp
+++ b/llvm/lib/Transforms/Scalar/GVN.cpp
@@ -1059,8 +1059,8 @@ static void reportMayClobberedLoad(LoadInst *Load, MemDepResult DepInfo,
if (DT->dominates(cast<Instruction>(OtherAccess), cast<Instruction>(U)))
OtherAccess = U;
else
- assert(DT->dominates(cast<Instruction>(U),
- cast<Instruction>(OtherAccess)));
+ assert(U == OtherAccess || DT->dominates(cast<Instruction>(U),
+ cast<Instruction>(OtherAccess)));
} else
OtherAccess = U;
}
diff --git a/llvm/test/Transforms/GVN/remarks-selfdomination.ll b/llvm/test/Transforms/GVN/remarks-selfdomination.ll
new file mode 100644
index 0000000000000..b4ffaa4108300
--- /dev/null
+++ b/llvm/test/Transforms/GVN/remarks-selfdomination.ll
@@ -0,0 +1,21 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -gvn -pass-remarks-analysis=gvn -S < %s | FileCheck %s
+
+define ptr @ReplaceWithTidy(ptr %one, ptr %two, ptr %three) {
+; CHECK-LABEL: @ReplaceWithTidy(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ONE:%.*]], align 8
+; CHECK-NEXT: store ptr [[TMP0]], ptr [[TMP0]], align 8
+; CHECK-NEXT: store ptr null, ptr [[TWO:%.*]], align 8
+; CHECK-NEXT: [[TMP1:%.*]] = load ptr, ptr [[TMP0]], align 8
+; CHECK-NEXT: store ptr [[TMP1]], ptr [[THREE:%.*]], align 8
+; CHECK-NEXT: ret ptr null
+;
+entry:
+ %0 = load ptr, ptr %one, align 8
+ store ptr %0, ptr %0, align 8
+ store ptr null, ptr %two, align 8
+ %1 = load ptr, ptr %0, align 8
+ store ptr %1, ptr %three, align 8
+ ret ptr null
+}
More information about the llvm-commits
mailing list