51 lines · plain
1; RUN: opt < %s -passes=licm -S | FileCheck %s2 3; Test moved from sinking.ll, as it tests sinking of a store who alone touches4; a memory location in a loop.5; Store can be sunk out of exit block containing indirectbr instructions after6; D50925. Updated to use an argument instead of undef, due to PR38989.7define void @test12(ptr %ptr, ptr %arg) {8; CHECK-LABEL: @test129; CHECK: store10; CHECK-NEXT: br label %lab411 br label %lab412 13lab4:14 br label %lab2015 16lab5:17 br label %lab2018 19lab6:20 br label %lab421 22lab7:23 br i1 false, label %lab8, label %lab1324 25lab8:26 br i1 true, label %lab13, label %lab1027 28lab10:29 br label %lab730 31lab13:32 ret void33 34lab20:35 br label %lab2136 37lab21:38; CHECK: lab21:39; CHECK-NOT: store40; CHECK: br i1 false, label %lab21, label %lab2241 store i32 36127957, ptr %ptr, align 442 br i1 false, label %lab21, label %lab2243 44lab22:45; CHECK: lab22:46; CHECK-NOT: store47; CHECK-NEXT: indirectbr ptr %arg 48 indirectbr ptr %arg, [label %lab5, label %lab6, label %lab7]49}50 51