; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -S -licm < %s | FileCheck %s define i32 @j() { ; CHECK-LABEL: @j( ; CHECK-NEXT: entry: ; CHECK-NEXT: br label [[FOR_COND:%.*]] ; CHECK: for.cond: ; CHECK-NEXT: callbr void asm sideeffect "", "!i,~{dirflag},~{fpsr},~{flags}"() ; CHECK-NEXT: to label [[COND_TRUE_I:%.*]] [label %for.end.split.loop.exit1] ; CHECK: cond.true.i: ; CHECK-NEXT: br i1 true, label [[FOR_END_SPLIT_LOOP_EXIT:%.*]], label [[FOR_COND]] ; CHECK: for.end.split.loop.exit: ; CHECK-NEXT: [[ASMRESULT1_I_I_LE:%.*]] = extractvalue { i8, i32 } zeroinitializer, 1 ; CHECK-NEXT: br label [[FOR_END:%.*]] ; CHECK: for.end.split.loop.exit1: ; CHECK-NEXT: [[PHI_PH2:%.*]] = phi i32 [ undef, [[FOR_COND]] ] ; CHECK-NEXT: br label [[FOR_END]] ; CHECK: for.end: ; CHECK-NEXT: [[PHI:%.*]] = phi i32 [ [[ASMRESULT1_I_I_LE]], [[FOR_END_SPLIT_LOOP_EXIT]] ], [ [[PHI_PH2]], [[FOR_END_SPLIT_LOOP_EXIT1:%.*]] ] ; CHECK-NEXT: ret i32 [[PHI]] ; entry: br label %for.cond for.cond: ; preds = %cond.true.i, %entry callbr void asm sideeffect "", "!i,~{dirflag},~{fpsr},~{flags}"() to label %cond.true.i [label %for.end] cond.true.i: ; preds = %for.cond %asmresult1.i.i = extractvalue { i8, i32 } zeroinitializer, 1 br i1 undef, label %for.end, label %for.cond for.end: ; preds = %cond.true.i, %for.cond %phi = phi i32 [ %asmresult1.i.i, %cond.true.i ], [ undef, %for.cond ] ret i32 %phi }