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
31 lines
1.5 KiB
LLVM
31 lines
1.5 KiB
LLVM
; Test ensures that non-optimizable array mallocs are not optimized; specifically
|
|
; GlobalOpt was treating a non-optimizable array malloc as a non-array malloc
|
|
; and optimizing the global object that the malloc was stored to as a single
|
|
; element global. The global object @TOP in this test should not be optimized.
|
|
; RUN: opt < %s -passes=globalopt -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"
|
|
target triple = "x86_64-apple-darwin10.0"
|
|
|
|
@TOP = internal global i64* null ; <i64**> [#uses=2]
|
|
; CHECK: @TOP = internal unnamed_addr global i64* null
|
|
@channelColumns = internal global i64 0 ; <i64*> [#uses=2]
|
|
|
|
; Derived from @DescribeChannel() in yacr2
|
|
define void @test() nounwind ssp {
|
|
store i64 2335, i64* @channelColumns, align 8
|
|
%1 = load i64, i64* @channelColumns, align 8 ; <i64> [#uses=1]
|
|
%2 = shl i64 %1, 3 ; <i64> [#uses=1]
|
|
%3 = add i64 %2, 8 ; <i64> [#uses=1]
|
|
%4 = call noalias i8* @malloc(i64 %3) nounwind ; <i8*> [#uses=1]
|
|
; CHECK: call noalias i8* @malloc
|
|
%5 = bitcast i8* %4 to i64* ; <i64*> [#uses=1]
|
|
store i64* %5, i64** @TOP, align 8
|
|
%6 = load i64*, i64** @TOP, align 8 ; <i64*> [#uses=1]
|
|
%7 = getelementptr inbounds i64, i64* %6, i64 13 ; <i64*> [#uses=1]
|
|
store i64 0, i64* %7, align 8
|
|
ret void
|
|
}
|
|
|
|
declare noalias i8* @malloc(i64) nounwind
|