[polly] 26697f4 - [Polly] Correct integer comparison bit width (#190493)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Apr 5 18:09:57 PDT 2026
Author: Michael Kruse
Date: 2026-04-06T01:09:51Z
New Revision: 26697f4d07eb921aebabdaa7d064c5165c70717e
URL: https://github.com/llvm/llvm-project/commit/26697f4d07eb921aebabdaa7d064c5165c70717e
DIFF: https://github.com/llvm/llvm-project/commit/26697f4d07eb921aebabdaa7d064c5165c70717e.diff
LOG: [Polly] Correct integer comparison bit width (#190493)
For making an integer compareable to bool, don't compare it to bool.
Bug occured during the reduction of #190459
Added:
polly/test/CodeGen/issue190459_1.ll
Modified:
polly/lib/CodeGen/IslExprBuilder.cpp
Removed:
################################################################################
diff --git a/polly/lib/CodeGen/IslExprBuilder.cpp b/polly/lib/CodeGen/IslExprBuilder.cpp
index 01e252d51223b..ca5a82fd5fa8e 100644
--- a/polly/lib/CodeGen/IslExprBuilder.cpp
+++ b/polly/lib/CodeGen/IslExprBuilder.cpp
@@ -794,6 +794,7 @@ Value *IslExprBuilder::create(__isl_take isl_ast_expr *Expr) {
llvm::Value *IslExprBuilder::createBool(__isl_take isl_ast_expr *Expr) {
Value *Result = create(Expr);
if (!Result->getType()->isIntegerTy(1))
- Result = Builder.CreateICmpNE(Result, Builder.getInt1(false));
+ Result =
+ Builder.CreateICmpNE(Result, ConstantInt::get(Result->getType(), 0));
return Result;
}
diff --git a/polly/test/CodeGen/issue190459_1.ll b/polly/test/CodeGen/issue190459_1.ll
new file mode 100644
index 0000000000000..6f511ddffc05b
--- /dev/null
+++ b/polly/test/CodeGen/issue190459_1.ll
@@ -0,0 +1,27 @@
+; RUN: opt %loadNPMPolly '-passes=polly-custom<codegen>' -polly-invariant-load-hoisting -S < %s | FileCheck %s
+
+; https://github.com/llvm/llvm-project/issues/190459
+; Avoid a crash due to comparing integers with
diff erent widths
+
+; "i1 false" is the result of the comparison with the fixed width
+; CHECK: br i1 false, label %polly.preload.exec, label %polly.preload.merge
+
+target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
+
+define i32 @func(i32 %arg) {
+bb:
+ br label %bb1
+
+bb1: ; preds = %bb
+ store i16 0, ptr null, align 2
+ %i = icmp eq i32 %arg, 0
+ br i1 %i, label %bb2, label %bb5
+
+bb2: ; preds = %bb1
+ %i3 = load ptr, ptr null, align 8
+ %i4 = load i16, ptr %i3, align 2
+ br label %bb5
+
+bb5: ; preds = %bb2, %bb1
+ ret i32 0
+}
More information about the llvm-commits
mailing list