Bjorn Pettersson 8ebb3eac02 [test] Use -passes syntax when specifying pipeline in some more tests
The legacy PM is deprecated, so update a bunch of lit tests running
opt to use the new PM syntax when specifying the pipeline.
In this patch focus has been put on test cases for ConstantMerge,
ConstraintElimination, CorrelatedValuePropagation, GlobalDCE,
GlobalOpt, SCCP, TailCallElim and PredicateInfo.

Differential Revision: https://reviews.llvm.org/D114516
2021-11-27 09:52:55 +01:00

59 lines
1.4 KiB
LLVM

; RUN: opt < %s -passes=sccp -S | FileCheck %s
; This is a basic correctness check for constant propagation. The add
; instruction should be eliminated.
define i32 @test1(i1 %B) {
br i1 %B, label %BB1, label %BB2
BB1: ; preds = %0
%Val = add i32 0, 0 ; <i32> [#uses=1]
br label %BB3
BB2: ; preds = %0
br label %BB3
BB3: ; preds = %BB2, %BB1
%Ret = phi i32 [ %Val, %BB1 ], [ 1, %BB2 ] ; <i32> [#uses=1]
ret i32 %Ret
; CHECK-LABEL: @test1(
; CHECK: %Ret = phi i32 [ 0, %BB1 ], [ 1, %BB2 ]
}
; This is the test case taken from appel's book that illustrates a hard case
; that SCCP gets right.
;
define i32 @test2(i32 %i0, i32 %j0) {
; CHECK-LABEL: @test2(
BB1:
br label %BB2
BB2:
%j2 = phi i32 [ %j4, %BB7 ], [ 1, %BB1 ]
%k2 = phi i32 [ %k4, %BB7 ], [ 0, %BB1 ]
%kcond = icmp slt i32 %k2, 100
br i1 %kcond, label %BB3, label %BB4
BB3:
%jcond = icmp slt i32 %j2, 20
br i1 %jcond, label %BB5, label %BB6
; CHECK: BB3:
; CHECK-NEXT: br i1 true, label %BB5, label %BB6
BB4:
ret i32 %j2
; CHECK: BB4:
; CHECK-NEXT: ret i32 1
BB5:
%k3 = add i32 %k2, 1
br label %BB7
BB6:
%k5 = add i32 %k2, 1
br label %BB7
; CHECK: BB6:
; CHECK-NEXT: br label %BB7
BB7:
%j4 = phi i32 [ 1, %BB5 ], [ %k2, %BB6 ]
%k4 = phi i32 [ %k3, %BB5 ], [ %k5, %BB6 ]
br label %BB2
; CHECK: BB7:
; CHECK-NEXT: %k4 = phi i32 [ %k3, %BB5 ], [ undef, %BB6 ]
; CHECK-NEXT: br label %BB2
}