[llvm] 664e847 - llvm-reduce: Fix invalid reduction on tokens in operands-to-args (#133855)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 1 08:14:50 PDT 2025
Author: Matt Arsenault
Date: 2025-04-01T22:14:47+07:00
New Revision: 664e847916ff7329da9e5295ecc17ec169e647eb
URL: https://github.com/llvm/llvm-project/commit/664e847916ff7329da9e5295ecc17ec169e647eb
DIFF: https://github.com/llvm/llvm-project/commit/664e847916ff7329da9e5295ecc17ec169e647eb.diff
LOG: llvm-reduce: Fix invalid reduction on tokens in operands-to-args (#133855)
Added:
llvm/test/tools/llvm-reduce/reduce-operands-to-args-token.ll
Modified:
llvm/tools/llvm-reduce/deltas/ReduceOperandsToArgs.cpp
Removed:
################################################################################
diff --git a/llvm/test/tools/llvm-reduce/reduce-operands-to-args-token.ll b/llvm/test/tools/llvm-reduce/reduce-operands-to-args-token.ll
new file mode 100644
index 0000000000000..6dba9c266551a
--- /dev/null
+++ b/llvm/test/tools/llvm-reduce/reduce-operands-to-args-token.ll
@@ -0,0 +1,27 @@
+; Check no invalid reduction caused by introducing a token typed
+; function argument
+
+; RUN: llvm-reduce --abort-on-invalid-reduction --delta-passes=operands-to-args --test FileCheck --test-arg --check-prefix=INTERESTING --test-arg %s --test-arg --input-file %s -o %t
+; RUN: FileCheck -check-prefix=RESULT %s < %t
+
+; INTERESTING-LABEL: define void @tokens(
+; INTERESTING: call void @llvm.token.consumer
+
+; RESULT-LABEL: define void @tokens(ptr %local.ptr) {
+; RESULT-NEXT: %local.ptr1 = alloca i32, align 4
+; RESULT-NEXT: %token = call token @llvm.token.producer()
+; RESULT-NEXT: store i32 0, ptr %local.ptr, align 4
+; RESULT-NEXT: call void @llvm.token.consumer(token %token)
+; RESULT-NEXT: store i32 1, ptr %local.ptr, align 4
+; RESULT-NEXT: ret void
+define void @tokens() {
+ %local.ptr = alloca i32
+ %token = call token @llvm.token.producer()
+ store i32 0, ptr %local.ptr
+ call void @llvm.token.consumer(token %token)
+ store i32 1, ptr %local.ptr
+ ret void
+}
+
+declare token @llvm.token.producer()
+declare void @llvm.token.consumer(token)
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceOperandsToArgs.cpp b/llvm/tools/llvm-reduce/deltas/ReduceOperandsToArgs.cpp
index 4bae588d60c14..c23fc6742bfeb 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceOperandsToArgs.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceOperandsToArgs.cpp
@@ -36,7 +36,7 @@ static bool canReduceUse(Use &Op) {
return false;
// Don't pass labels/metadata as arguments.
- if (Ty->isLabelTy() || Ty->isMetadataTy())
+ if (Ty->isLabelTy() || Ty->isMetadataTy() || Ty->isTokenTy())
return false;
// No need to replace values that are already arguments.
More information about the llvm-commits
mailing list