[llvm] [LV] Fix missing entry in willGenerateVectors (PR #136712)
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 22 14:04:45 PDT 2025
================
@@ -753,6 +753,41 @@ for.exit:
ret void
}
+; The histogram operation generates vectors. This example used to crash
+; due to a missing entry in a switch statement.
+define void @histogram_generates_vectors_crash(ptr %data_array, ptr noalias %indices) {
+; CHECK-LABEL: define void @histogram_generates_vectors_crash(
+; CHECK-SAME: ptr [[DATA_ARRAY:%.*]], ptr noalias [[INDICES:%.*]]) {
+; CHECK-NEXT: entry:
+; CHECK-NEXT: br label [[FOR_BODY:%.*]]
+; CHECK: for.body:
+; CHECK-NEXT: [[IV:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[IV_NEXT:%.*]], [[FOR_BODY]] ]
+; CHECK-NEXT: [[IV_NEXT]] = add i64 [[IV]], 1
+; CHECK-NEXT: [[EXITCOND:%.*]] = icmp eq i64 [[IV]], 1
+; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_EXIT:%.*]], label [[FOR_BODY]]
+; CHECK: for.exit:
+; CHECK-NEXT: ret void
+;
+entry:
+ br label %for.body
+
+for.body:
+ %iv = phi i64 [ 0, %entry ], [ %iv.next, %for.body ]
+ %gep.indices = getelementptr [1048576 x i32], ptr %indices, i64 %iv
+ %l.idx = load i32, ptr %gep.indices, align 4
+ %idxprom5 = sext i32 %l.idx to i64
+ %gep.bucket = getelementptr [1048576 x i32], ptr %data_array, i64 %idxprom5
+ %l.bucket = load i32, ptr %gep.bucket, align 4
+ %inc = add i32 %l.bucket, 0
----------------
fhahn wrote:
Surprised that this still gets removed, can this be fixed by having the inc not be a no-op?
https://github.com/llvm/llvm-project/pull/136712
More information about the llvm-commits
mailing list