llvm-project/llvm/test/Analysis/ScalarEvolution/2009-05-09-PointerEdgeCount.ll
Philip Reames 0d38f21e4a [SCEV] Extend type hint in analysis output to all backedge kinds
This extends the work from 7755c26 to all of the different backend
taken count kinds that we print for the scev analysis printer.  As
before, the goal is to cut down on confusion as i4 -1 is a very
different (unsigned) value from i32 -1.
2024-03-06 13:08:05 -08:00

39 lines
1.5 KiB
LLVM

; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 4
; RUN: opt < %s -disable-output "-passes=print<scalar-evolution>" -scalar-evolution-classify-expressions=0 2>&1 | FileCheck %s
; PR3171
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
%struct.Foo = type { i32 }
%struct.NonPod = type { [2 x %struct.Foo] }
define void @_Z3foov() nounwind {
; CHECK-LABEL: '_Z3foov'
; CHECK-NEXT: Determining loop execution counts for: @_Z3foov
; CHECK-NEXT: Loop %bb1.i: backedge-taken count is i64 2
; CHECK-NEXT: Loop %bb1.i: constant max backedge-taken count is i64 2
; CHECK-NEXT: Loop %bb1.i: symbolic max backedge-taken count is i64 2
; CHECK-NEXT: Loop %bb1.i: Trip multiple is 3
;
entry:
%x = alloca %struct.NonPod, align 8 ; <ptr> [#uses=2]
%0 = getelementptr %struct.NonPod, ptr %x, i32 0, i32 0 ; <ptr> [#uses=1]
%1 = getelementptr [2 x %struct.Foo], ptr %0, i32 1, i32 0 ; <ptr> [#uses=1]
br label %bb1.i
bb1.i: ; preds = %bb2.i, %entry
%.0.i = phi ptr [ %1, %entry ], [ %4, %bb2.i ] ; <ptr> [#uses=2]
%2 = getelementptr %struct.NonPod, ptr %x, i32 0, i32 0, i32 0 ; <ptr> [#uses=1]
%3 = icmp eq ptr %.0.i, %2 ; <i1> [#uses=1]
br i1 %3, label %_ZN6NonPodD1Ev.exit, label %bb2.i
bb2.i: ; preds = %bb1.i
%4 = getelementptr %struct.Foo, ptr %.0.i, i32 -1 ; <ptr> [#uses=1]
br label %bb1.i
_ZN6NonPodD1Ev.exit: ; preds = %bb1.i
ret void
}