Files
clang-p2996/llvm/test/Transforms/IndVarSimplify/pr106239.ll
Nikita Popov c9a5e1b665 [IndVars] Check if WideInc available before trying to use it
WideInc/WideIncExpr can be null. Previously this worked out
because the comparison with WideIncExpr would fail. Now we have
accesses to WideInc prior to that. Avoid the issue with an
explicit check.

Fixes https://github.com/llvm/llvm-project/issues/106239.
2024-08-28 12:56:01 +02:00

37 lines
1.1 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt -S -passes=indvars < %s | FileCheck %s
target datalayout = "n8:16:32:64"
; Make sure it does not crash.
define i32 @m() {
; CHECK-LABEL: define i32 @m() {
; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: br label %[[FOR_BODY_I6:.*]]
; CHECK: [[FOR_BODY_I6]]:
; CHECK-NEXT: br i1 true, label %[[I_EXIT:.*]], label %[[IF_END_I:.*]]
; CHECK: [[IF_END_I]]:
; CHECK-NEXT: store i64 0, ptr null, align 8
; CHECK-NEXT: br label %[[FOR_BODY_I6]]
; CHECK: [[I_EXIT]]:
; CHECK-NEXT: ret i32 0
;
entry:
%div.i4 = sdiv i32 1, 0
br label %for.body.i6
for.body.i6: ; preds = %if.end.i, %entry
%add57.i = phi i32 [ %add.i7, %if.end.i ], [ 0, %entry ]
br i1 true, label %i.exit, label %if.end.i
if.end.i: ; preds = %for.body.i6
%add.i7 = add i32 %add57.i, %div.i4
%conv.i = zext i32 %add57.i to i64
store i64 %conv.i, ptr null, align 8
br label %for.body.i6
i.exit: ; preds = %for.body.i6
ret i32 0
}