view llvm/test/Transforms/IndVarSimplify/2003-09-23-NotAtTop.ll @ 252:1f2b6ac9f198 llvm-original

LLVM16-1
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Fri, 18 Aug 2023 09:04:13 +0900
parents c4bab56944e8
children
line wrap: on
line source

; RUN: opt -S -passes=indvars < %s | FileCheck %s

; The indvar simplification code should ensure that the first PHI in the block 
; is the canonical one!

define i32 @test() {
; <label>:0
        br label %Loop

Loop:           ; preds = %Loop, %0
; CHECK: Loop:
; CHECK-NEXT: Canonical
        %NonIndvar = phi i32 [ 200, %0 ], [ %NonIndvarNext, %Loop ]             ; <i32> [#uses=1]
        %Canonical = phi i32 [ 0, %0 ], [ %CanonicalNext, %Loop ]               ; <i32> [#uses=2]
        store i32 %Canonical, ptr null
        %NonIndvarNext = sdiv i32 %NonIndvar, 2         ; <i32> [#uses=1]
        %CanonicalNext = add i32 %Canonical, 1          ; <i32> [#uses=1]
        br label %Loop
}