52 lines · plain
1; RUN: opt -passes=licm -verify-memoryssa -S %s | FileCheck %s2; REQUIRES: asserts3target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"4target triple = "x86_64-unknown-linux-gnu"5 6@0 = external global { { ptr, i32, i32 }, ptr, i8, i8 }7 8declare void @g()9 10; Function Attrs: argmemonly nounwind willreturn11declare void @llvm.lifetime.end.p0(ptr nocapture) #012 13; CHECK-LABEL: @f14define void @f(i1 %arg) align 2 {15entry:16 %P = alloca ptr, align 817 br label %cond.end.i.i.i.i18 19cond.end.i.i.i.i: ; preds = %cont20, %entry20 br i1 %arg, label %cont20, label %if.end21 22cont20: ; preds = %cond.end.i.i.i.i, %cond.end.i.i.i.i, %cond.end.i.i.i.i23 store ptr undef, ptr %P, align 824 br label %cond.end.i.i.i.i25 26if.end: ; preds = %cond.end.i.i.i.i27 br i1 %arg, label %cond.exit, label %handler.type_mismatch2.i28 29handler.type_mismatch2.i: ; preds = %if.end30 tail call void @g()31 unreachable32 33cond.exit: ; preds = %if.end34 switch i8 undef, label %block.exit [35 i8 81, label %sw.bb9436 i8 12, label %cleanup37 i8 74, label %cleanup38 ]39 40block.exit: ; preds = %cond.exit41 unreachable42 43sw.bb94: ; preds = %cond.exit44 call void @g()45 br label %cleanup46 47cleanup: ; preds = %sw.bb94, %cond.exit, %cond.exit48 ret void49}50 51attributes #0 = { argmemonly nounwind willreturn }52