[llvm] [DeadStoreElimination] Optimize tautological assignments (PR #75744)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 19 06:04:08 PST 2023


================
@@ -795,3 +795,27 @@ join:
   store i8 %v, ptr %q, align 1
   ret void
 }
+
+ at x = global i32 0, align 4
+define void @remove_tautological_store() {
+; CHECK-LABEL: @remove_tautological_store(
+; CHECK-NEXT:    [[TMP1:%.*]] = load i32, ptr @x, align 4
+; CHECK-NEXT:    [[TMP2:%.*]] = icmp eq i32 [[TMP1]], 4
+; CHECK-NEXT:    br i1 [[TMP2]], label [[TMP3:%.*]], label [[TMP4:%.*]]
+; CHECK:       3:
+; CHECK-NEXT:    br label [[TMP4]]
+; CHECK:       4:
+; CHECK-NEXT:    ret void
+;
+  %1 = load i32, ptr @x, align 4
+  %2 = icmp eq i32 %1, 4
+  br i1 %2, label %3, label %4
+
+3:
+  store i32 4, ptr @x, align 4
+  br label %4
+
+4:
+  ret void
+}
----------------
nikic wrote:

Missing a lot of a negative tests. E.g. different value in condition and store, clobbers in different places, no dominance relation, etc.

https://github.com/llvm/llvm-project/pull/75744


More information about the llvm-commits mailing list