1fe755af3SPhilip Reames;; A very basic test to make sure that splitting the backedge keeps working 2*1ceb79e2SJan Dupej;; RUN: opt < %s -passes=place-safepoints -spp-split-backedge=1 -S | FileCheck %s 3fe755af3SPhilip Reames 4fe755af3SPhilip Reamesdefine void @test(i32, i1 %cond) gc "statepoint-example" { 5fe755af3SPhilip Reames; CHECK-LABEL: @test 6fe755af3SPhilip Reames; CHECK-LABEL: loop.loop_crit_edge 7fe755af3SPhilip Reames; CHECK: call void @do_safepoint 8fe755af3SPhilip Reames; CHECK-NEXT: br label %loop 9fe755af3SPhilip Reamesentry: 10fe755af3SPhilip Reames br label %loop 11fe755af3SPhilip Reames 12fe755af3SPhilip Reamesloop: 13fe755af3SPhilip Reames br i1 %cond, label %loop, label %exit 14fe755af3SPhilip Reames 15fe755af3SPhilip Reamesexit: 16fe755af3SPhilip Reames ret void 17fe755af3SPhilip Reames} 18fe755af3SPhilip Reames 19fe755af3SPhilip Reames; Test for the case where a single conditional branch jumps to two 20fe755af3SPhilip Reames; different loop header blocks. Since we're currently using LoopSimplfy 21fe755af3SPhilip Reames; this doesn't hit the interesting case, but once we remove that, we need 22fe755af3SPhilip Reames; to be sure this keeps working. 23fe755af3SPhilip Reamesdefine void @test2(i32, i1 %cond) gc "statepoint-example" { 24fe755af3SPhilip Reames; CHECK-LABEL: @test2 25fe755af3SPhilip Reames; CHECK-LABEL: loop2.loop2_crit_edge: 26fe755af3SPhilip Reames; CHECK: call void @do_safepoint 27fe755af3SPhilip Reames; CHECK-NEXT: br label %loop2 28fe755af3SPhilip Reames; CHECK-LABEL: loop2.loop_crit_edge: 29fe755af3SPhilip Reames; CHECK: call void @do_safepoint 30fe755af3SPhilip Reames; CHECK-NEXT: br label %loop 31fe755af3SPhilip Reamesentry: 32fe755af3SPhilip Reames br label %loop 33fe755af3SPhilip Reames 34fe755af3SPhilip Reamesloop: 35fe755af3SPhilip Reames br label %loop2 36fe755af3SPhilip Reames 37fe755af3SPhilip Reamesloop2: 38fe755af3SPhilip Reames br i1 %cond, label %loop, label %loop2 39fe755af3SPhilip Reames} 40fe755af3SPhilip Reames 41fe755af3SPhilip Reamesdeclare void @do_safepoint() 42fe755af3SPhilip Reamesdefine void @gc.safepoint_poll() { 43fe755af3SPhilip Reamesentry: 44fe755af3SPhilip Reames call void @do_safepoint() 45fe755af3SPhilip Reames ret void 46fe755af3SPhilip Reames} 47