1*f1ec0d12SNick Anderson; RUN: opt -S -passes='require<profile-summary>,function(codegenprepare)' -mtriple=x86_64-linux < %s | FileCheck %s 2202ae987SJann Horn; 3202ae987SJann Horn; Ensure that blocks that only contain @llvm.assume are removed completely 4202ae987SJann Horn; during CodeGenPrepare. 5202ae987SJann Horn 6202ae987SJann Horn; CHECK-LABEL: @simple( 7202ae987SJann Horn; CHECK-NEXT: end: 8202ae987SJann Horn; CHECK-NEXT: ret void 9202ae987SJann Horndefine void @simple(i64 %addr, i1 %assumption) { 10202ae987SJann Horn %cmp1 = icmp eq i64 %addr, 0 11202ae987SJann Horn br i1 %cmp1, label %do_assume, label %end 12202ae987SJann Horn 13202ae987SJann Horndo_assume: 14202ae987SJann Horn tail call void @llvm.assume(i1 %assumption) 15202ae987SJann Horn br label %end 16202ae987SJann Horn 17202ae987SJann Hornend: 18202ae987SJann Horn ret void 19202ae987SJann Horn} 20202ae987SJann Horn 21202ae987SJann Horn; CHECK-LABEL: @complex_assume( 22202ae987SJann Horn; CHECK-NEXT: end: 23202ae987SJann Horn; CHECK-NEXT: ret void 24202ae987SJann Horndefine void @complex_assume(i64 %addr, i1 %assumption_a, i1 %assumption_b, 25202ae987SJann Horn i64 %val_a, i64 %val_b) { 26202ae987SJann Horn %cmp1 = icmp eq i64 %addr, 0 27202ae987SJann Horn br i1 %cmp1, label %do_assume, label %end 28202ae987SJann Horn 29202ae987SJann Horndo_assume: 30202ae987SJann Horn call void @llvm.assume(i1 %assumption_a) 31202ae987SJann Horn call void @llvm.assume(i1 %assumption_b) 32202ae987SJann Horn %val_xor = xor i64 %val_a, %val_b 33202ae987SJann Horn %val_shifted = lshr i64 %val_xor, 7 34202ae987SJann Horn %assumption_c = trunc i64 %val_shifted to i1 35202ae987SJann Horn call void @llvm.assume(i1 %assumption_c) 36202ae987SJann Horn %assumption_d = call i1 @readonly_func(i64 %val_b) 37202ae987SJann Horn call void @llvm.assume(i1 %assumption_d) 38202ae987SJann Horn br label %end 39202ae987SJann Horn 40202ae987SJann Hornend: 41202ae987SJann Horn ret void 42202ae987SJann Horn} 43202ae987SJann Horn 44202ae987SJann Horndeclare void @llvm.assume(i1 noundef) 45202ae987SJann Horndeclare i1 @readonly_func(i64) nounwind readonly willreturn; 46202ae987SJann Horn 47