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
35 lines
786 B
LLVM
35 lines
786 B
LLVM
; RUN: opt < %s -passes=globalopt -S | FileCheck %s
|
|
; PR36546
|
|
|
|
; Check that musttail callee preserves its calling convention
|
|
|
|
define i32 @test(i32 %a) {
|
|
; CHECK: %ca = musttail call i32 @foo(i32 %a)
|
|
%ca = musttail call i32 @foo(i32 %a)
|
|
ret i32 %ca
|
|
}
|
|
|
|
; CHECK-LABEL: define internal i32 @foo(i32 %a)
|
|
define internal i32 @foo(i32 %a) {
|
|
ret i32 %a
|
|
}
|
|
|
|
; Check that musttail caller preserves its calling convention
|
|
|
|
define i32 @test2(i32 %a) {
|
|
%ca = call i32 @foo1(i32 %a)
|
|
ret i32 %ca
|
|
}
|
|
|
|
; CHECK-LABEL: define internal i32 @foo1(i32 %a)
|
|
define internal i32 @foo1(i32 %a) {
|
|
; CHECK: %ca = musttail call i32 @foo2(i32 %a)
|
|
%ca = musttail call i32 @foo2(i32 %a)
|
|
ret i32 %ca
|
|
}
|
|
|
|
; CHECK-LABEL: define internal i32 @foo2(i32 %a)
|
|
define internal i32 @foo2(i32 %a) {
|
|
ret i32 %a
|
|
}
|