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
81 lines
2.5 KiB
LLVM
81 lines
2.5 KiB
LLVM
; RUN: opt -passes=globalopt -disable-output < %s
|
|
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128-n8:16:32"
|
|
target triple = "i386-apple-darwin9.8"
|
|
|
|
%0 = type { i32, void ()*, i8* }
|
|
%struct.btSimdScalar = type { %"union.btSimdScalar::$_14" }
|
|
%"union.btSimdScalar::$_14" = type { <4 x float> }
|
|
|
|
@_ZL6vTwist = global %struct.btSimdScalar zeroinitializer ; <%struct.btSimdScalar*> [#uses=1]
|
|
@llvm.global_ctors = appending global [1 x %0] [%0 { i32 65535, void ()* @_GLOBAL__I__ZN21btConeTwistConstraintC2Ev, i8* null }] ; <[12 x %0]*> [#uses=0]
|
|
|
|
define internal void @_GLOBAL__I__ZN21btConeTwistConstraintC2Ev() nounwind section "__TEXT,__StaticInit,regular,pure_instructions" {
|
|
entry:
|
|
store float 1.0, float* getelementptr inbounds (%struct.btSimdScalar, %struct.btSimdScalar* @_ZL6vTwist, i32 0, i32 0, i32 0, i32 3), align 4
|
|
ret void
|
|
}
|
|
|
|
|
|
; PR6760
|
|
%T = type { [5 x i32] }
|
|
|
|
@switch_inf = internal global %T* null
|
|
|
|
define void @test(i8* %arch_file, i32 %route_type) {
|
|
entry:
|
|
%A = sext i32 1 to i64
|
|
%B = mul i64 %A, 20
|
|
%C = call noalias i8* @malloc(i64 %B) nounwind
|
|
%D = bitcast i8* %C to %T*
|
|
store %T* %D, %T** @switch_inf, align 8
|
|
unreachable
|
|
|
|
bb.nph.i:
|
|
%scevgep.i539 = getelementptr i8, i8* %C, i64 4
|
|
unreachable
|
|
|
|
xx:
|
|
%E = load %T*, %T** @switch_inf, align 8
|
|
unreachable
|
|
}
|
|
|
|
declare noalias i8* @malloc(i64) nounwind
|
|
|
|
|
|
; PR8063
|
|
@permute_bitrev.bitrev = internal global i32* null, align 8
|
|
define void @permute_bitrev() nounwind {
|
|
entry:
|
|
%tmp = load i32*, i32** @permute_bitrev.bitrev, align 8
|
|
%conv = sext i32 0 to i64
|
|
%mul = mul i64 %conv, 4
|
|
%call = call i8* @malloc(i64 %mul)
|
|
%0 = bitcast i8* %call to i32*
|
|
store i32* %0, i32** @permute_bitrev.bitrev, align 8
|
|
ret void
|
|
}
|
|
|
|
|
|
|
|
|
|
@data8 = internal global [8000 x i8] zeroinitializer, align 16
|
|
define void @memset_with_strange_user() ssp {
|
|
call void @llvm.memset.p0i8.i64(i8* align 16 getelementptr inbounds ([8000 x i8], [8000 x i8]* @data8, i64 0, i64 0), i8 undef, i64 ptrtoint (i8* getelementptr ([8000 x i8], [8000 x i8]* @data8, i64 1, i64 sub (i64 0, i64 ptrtoint ([8000 x i8]* @data8 to i64))) to i64), i1 false)
|
|
ret void
|
|
}
|
|
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i1) nounwind
|
|
|
|
|
|
; PR9856
|
|
@g_52 = internal global i32** null, align 8
|
|
@g_90 = external global i32*, align 8
|
|
|
|
define void @icmp_user_of_stored_once() nounwind ssp {
|
|
entry:
|
|
%tmp4 = load i32**, i32*** @g_52, align 8
|
|
store i32** @g_90, i32*** @g_52
|
|
%cmp17 = icmp ne i32*** undef, @g_52
|
|
ret void
|
|
}
|
|
|