
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
60 lines
1.6 KiB
LLVM
60 lines
1.6 KiB
LLVM
; RUN: opt -passes=globalopt -S -o - < %s | FileCheck %s
|
|
|
|
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
declare {}* @llvm.invariant.start.p0i8(i64 %size, i8* nocapture %ptr)
|
|
|
|
define void @test1(i8* %ptr) {
|
|
call {}* @llvm.invariant.start.p0i8(i64 4, i8* %ptr)
|
|
ret void
|
|
}
|
|
|
|
@object1 = global i32 0
|
|
; CHECK: @object1 = constant i32 -1
|
|
define void @ctor1() {
|
|
store i32 -1, i32* @object1
|
|
%A = bitcast i32* @object1 to i8*
|
|
call void @test1(i8* %A)
|
|
ret void
|
|
}
|
|
|
|
|
|
@object2 = global i32 0
|
|
; CHECK: @object2 = global i32 0
|
|
define void @ctor2() {
|
|
store i32 -1, i32* @object2
|
|
%A = bitcast i32* @object2 to i8*
|
|
%B = call {}* @llvm.invariant.start.p0i8(i64 4, i8* %A)
|
|
%C = bitcast {}* %B to i8*
|
|
ret void
|
|
}
|
|
|
|
|
|
@object3 = global i32 0
|
|
; CHECK: @object3 = global i32 -1
|
|
define void @ctor3() {
|
|
store i32 -1, i32* @object3
|
|
%A = bitcast i32* @object3 to i8*
|
|
call {}* @llvm.invariant.start.p0i8(i64 3, i8* %A)
|
|
ret void
|
|
}
|
|
|
|
|
|
@object4 = global i32 0
|
|
; CHECK: @object4 = global i32 -1
|
|
define void @ctor4() {
|
|
store i32 -1, i32* @object4
|
|
%A = bitcast i32* @object4 to i8*
|
|
call {}* @llvm.invariant.start.p0i8(i64 -1, i8* %A)
|
|
ret void
|
|
}
|
|
|
|
|
|
@llvm.global_ctors = appending constant
|
|
[4 x { i32, void ()*, i8* }]
|
|
[ { i32, void ()*, i8* } { i32 65535, void ()* @ctor1, i8* null },
|
|
{ i32, void ()*, i8* } { i32 65535, void ()* @ctor2, i8* null },
|
|
{ i32, void ()*, i8* } { i32 65535, void ()* @ctor3, i8* null },
|
|
{ i32, void ()*, i8* } { i32 65535, void ()* @ctor4, i8* null } ]
|