Home | History | Annotate | Download | only in Feature
      1 ; RUN: llvm-as < %s | llvm-dis > %t1.ll
      2 ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
      3 ; RUN: diff %t1.ll %t2.ll
      4 
      5 ;; This is an irreducible flow graph
      6 define void @irreducible(i1 %cond) {
      7         br i1 %cond, label %X, label %Y
      8 
      9 X:              ; preds = %Y, %0
     10         br label %Y
     11 
     12 Y:              ; preds = %X, %0
     13         br label %X
     14 }
     15 
     16 ;; This is a pair of loops that share the same header
     17 define void @sharedheader(i1 %cond) {
     18         br label %A
     19 
     20 A:              ; preds = %Y, %X, %0
     21         br i1 %cond, label %X, label %Y
     22 
     23 X:              ; preds = %A
     24         br label %A
     25 
     26 Y:              ; preds = %A
     27         br label %A
     28 }
     29 
     30 
     31 ;; This is a simple nested loop
     32 define void @nested(i1 %cond1, i1 %cond2, i1 %cond3) {
     33         br label %Loop1
     34 
     35 Loop1:          ; preds = %L2Exit, %0
     36         br label %Loop2
     37 
     38 Loop2:          ; preds = %L3Exit, %Loop1
     39         br label %Loop3
     40 
     41 Loop3:          ; preds = %Loop3, %Loop2
     42         br i1 %cond3, label %Loop3, label %L3Exit
     43 
     44 L3Exit:         ; preds = %Loop3
     45         br i1 %cond2, label %Loop2, label %L2Exit
     46 
     47 L2Exit:         ; preds = %L3Exit
     48         br i1 %cond1, label %Loop1, label %L1Exit
     49 
     50 L1Exit:         ; preds = %L2Exit
     51         ret void
     52 }
     53 
     54