diff options
Diffstat (limited to 'llvm/test/Transforms/SROA/dead-inst.ll')
-rw-r--r-- | llvm/test/Transforms/SROA/dead-inst.ll | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/llvm/test/Transforms/SROA/dead-inst.ll b/llvm/test/Transforms/SROA/dead-inst.ll deleted file mode 100644 index b1d106df3e6..00000000000 --- a/llvm/test/Transforms/SROA/dead-inst.ll +++ /dev/null @@ -1,97 +0,0 @@ -; SROA fails to rewrite allocs but does rewrite some phis and delete -; dead instructions. Ensure that this invalidates analyses required -; for other passes. -; RUN: opt < %s -passes=bdce,sroa,bdce -o %t -debug-pass-manager 2>&1 | FileCheck %s -; CHECK: Running pass: BDCEPass on H -; CHECK: Running analysis: DemandedBitsAnalysis on H -; CHECK: Running pass: SROA on H -; CHECK: Invalidating all non-preserved analyses for: H -; CHECK: Invalidating analysis: DemandedBitsAnalysis on H -; CHECK: Running pass: BDCEPass on H -; CHECK: Running analysis: DemandedBitsAnalysis on H -; CHECK: Finished llvm::Function pass manager run. - -target datalayout = "e-m:e-i64:64-n32:64" -target triple = "powerpc64le-grtev4-linux-gnu" - -%class.b = type { i64 } - -declare void @D(%class.b* sret, %class.b* dereferenceable(32)) local_unnamed_addr - -; Function Attrs: nounwind -define hidden fastcc void @H(%class.b* noalias nocapture readnone, [2 x i64]) unnamed_addr { - %3 = alloca %class.b, align 8 - %.sroa.0 = alloca i64, align 8 - store i64 0, i64* %.sroa.0, align 8 - %4 = extractvalue [2 x i64] %1, 1 - switch i64 %4, label %6 [ - i64 4, label %foo - i64 5, label %5 - ] - -; <label>:5: - %.sroa.0.0..sroa_cast3 = bitcast i64* %.sroa.0 to i8** - br label %12 - -; <label>:6: - %7 = icmp ugt i64 %4, 5 - %.sroa.0.0..sroa_cast5 = bitcast i64* %.sroa.0 to i8** - br i1 %7, label %8, label %12 - -; <label>:8: - %9 = load i8, i8* inttoptr (i64 4 to i8*), align 4 - %10 = icmp eq i8 %9, 47 - %11 = select i1 %10, i64 5, i64 4 - br label %12 - -; <label>:12: - %13 = phi i8** [ %.sroa.0.0..sroa_cast3, %5 ], [ %.sroa.0.0..sroa_cast5, %8 ], [ %.sroa.0.0..sroa_cast5, %6 ] - %14 = phi i64 [ 4, %5 ], [ %11, %8 ], [ 4, %6 ] - %15 = icmp ne i64 %4, 0 - %16 = icmp ugt i64 %4, %14 - %17 = and i1 %15, %16 - br i1 %17, label %18, label %a.exit - -; <label>:18: - %19 = tail call i8* @memchr(i8* undef, i32 signext undef, i64 undef) - %20 = icmp eq i8* %19, null - %21 = sext i1 %20 to i64 - br label %a.exit - -a.exit: - %22 = phi i64 [ -1, %12 ], [ %21, %18 ] - %23 = load i8*, i8** %13, align 8 - %24 = sub nsw i64 %22, %14 - %25 = bitcast %class.b* %3 to i8* - call void @llvm.lifetime.start.p0i8(i64 32, i8* nonnull %25) - %26 = icmp ult i64 %24, 2 - br i1 %26, label %G.exit, label %27 - -; <label>:27: - %28 = getelementptr inbounds i8, i8* %23, i64 undef - %29 = icmp eq i8* %28, null - br i1 %29, label %30, label %31 - -; <label>:30: - unreachable - -; <label>:31: - call void @D(%class.b* nonnull sret %3, %class.b* nonnull dereferenceable(32) undef) - br label %G.exit - -G.exit: - call void @llvm.lifetime.end.p0i8(i64 32, i8* nonnull %25) - br label %foo - -foo: - ret void -} - -; Function Attrs: nounwind readonly -declare i8* @memchr(i8*, i32 signext, i64) local_unnamed_addr - -; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0i8(i64, i8* nocapture) - -; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0i8(i64, i8* nocapture) |