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

57 lines
2.5 KiB
LLVM

; Test that SCEV gets invalidated when one of its dependencies is invalidated.
;
; Each of the RUNs checks that the pass manager runs SCEV, then invalidates it
; due to a dependency being invalidated, and then re-urns it. This will
; directly fail and indicates a failure that would occur later if we ddidn't
; invalidate SCEV in this way.
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
; RUN: opt < %s -passes='require<scalar-evolution>,invalidate<domtree>,print<scalar-evolution>' \
; RUN: -debug-pass-manager -disable-output 2>&1 \
; RUN: | FileCheck %s -check-prefixes=CHECK,CHECK-DT-INVALIDATE
;
; CHECK-DT-INVALIDATE: Running pass: RequireAnalysisPass
; CHECK-DT-INVALIDATE: Running analysis: ScalarEvolutionAnalysis
; CHECK-DT-INVALIDATE: Running analysis: DominatorTreeAnalysis
; CHECK-DT-INVALIDATE: Running pass: InvalidateAnalysisPass
; CHECK-DT-INVALIDATE: Invalidating analysis: DominatorTreeAnalysis
; CHECK-DT-INVALIDATE: Running pass: ScalarEvolutionPrinterPass
; CHECK-DT-INVALIDATE: Running analysis: ScalarEvolutionAnalysis
; CHECK-DT-INVALIDATE: Running analysis: DominatorTreeAnalysis
; RUN: opt < %s -passes='require<scalar-evolution>,invalidate<loops>,print<scalar-evolution>' \
; RUN: -debug-pass-manager -disable-output 2>&1 \
; RUN: | FileCheck %s -check-prefixes=CHECK,CHECK-LI-INVALIDATE
;
; CHECK-LI-INVALIDATE: Running pass: RequireAnalysisPass
; CHECK-LI-INVALIDATE: Running analysis: ScalarEvolutionAnalysis
; CHECK-LI-INVALIDATE: Running analysis: LoopAnalysis
; CHECK-LI-INVALIDATE: Running pass: InvalidateAnalysisPass
; CHECK-LI-INVALIDATE: Invalidating analysis: LoopAnalysis
; CHECK-LI-INVALIDATE: Running pass: ScalarEvolutionPrinterPass
; CHECK-LI-INVALIDATE: Running analysis: ScalarEvolutionAnalysis
; CHECK-LI-INVALIDATE: Running analysis: LoopAnalysis
; This test isn't particularly interesting, its just enough to make sure we
; actually do some work inside of SCEV so that if we regress here despite the
; debug pass printing continuing to match, ASan and other tools can catch it.
define void @test(i32 %n) {
; CHECK-LABEL: Classifying expressions for: @test
; CHECK: Loop %loop: backedge-taken count is i32 14
; CHECK: Loop %loop: constant max backedge-taken count is i32 14
entry:
br label %loop
loop:
%iv = phi i32 [ 0, %entry ], [ %iv.inc, %loop ]
%iv.inc = add nsw i32 %iv, 3
%becond = icmp ne i32 %iv.inc, 46
br i1 %becond, label %loop, label %leave
leave:
ret void
}