brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 8da1f28 Raw
101 lines · plain
1; RUN: opt < %s -passes=loop-simplify,lcssa -verify-loop-info -verify-dom-info -S \2; RUN:   | grep -F "indirectbr ptr %x, [label %L0, label %L1]" \3; RUN:   | count 64 5; LoopSimplify should not try to transform loops when indirectbr is involved.6 7define void @entry(ptr %x) {8entry:9  indirectbr ptr %x, [ label %L0, label %L1 ]10 11L0:12  br label %L013 14L1:15  ret void16}17 18define void @backedge(ptr %x) {19entry:20  br label %L021 22L0:23  br label %L124 25L1:26  indirectbr ptr %x, [ label %L0, label %L1 ]27}28 29define i64 @exit(ptr %x) {30entry:31  br label %L232 33L2:34  %z = bitcast i64 0 to i6435  indirectbr ptr %x, [ label %L0, label %L1 ]36 37L0:38  br label %L239 40L1:41  ret i64 %z42}43 44define i64 @criticalexit(ptr %x, i1 %a) {45entry:46  br i1 %a, label %L1, label %L247 48L2:49  %z = bitcast i64 0 to i6450  indirectbr ptr %x, [ label %L0, label %L1 ]51 52L0:53  br label %L254 55L1:56  %y = phi i64 [ %z, %L2 ], [ 1, %entry ]57  ret i64 %y58}59 60define i64 @exit_backedge(ptr %x) {61entry:62  br label %L063 64L0:65  %z = bitcast i64 0 to i6466  indirectbr ptr %x, [ label %L0, label %L1 ]67 68L1:69  ret i64 %z70}71 72define i64 @criticalexit_backedge(ptr %x, i1 %a) {73entry:74  br i1 %a, label %L0, label %L175 76L0:77  %z = bitcast i64 0 to i6478  indirectbr ptr %x, [ label %L0, label %L1 ]79 80L1:81  %y = phi i64 [ %z, %L0 ], [ 1, %entry ]82  ret i64 %y83}84 85define void @pr5502(ptr %arg, i1 %arg2) nounwind {86entry:87  br label %while.cond88 89while.cond:90  br i1 %arg2, label %while.body, label %while.end91 92while.body:93  indirectbr ptr %arg, [label %end_opcode, label %end_opcode]94 95end_opcode:96  br i1 false, label %end_opcode, label %while.cond97 98while.end:99  ret void100}101