| // RUN: mlir-translate -mlir-to-llvmir %s | FileCheck %s | 
 |  | 
 | // Test that trying to outline an infinite loop doesn't lead to an assertion | 
 | // failure. | 
 |  | 
 | llvm.func @parallel_infinite_loop() -> () { | 
 |   omp.parallel { | 
 |     llvm.br ^bb1 | 
 |   ^bb1: | 
 |     llvm.br ^bb1 | 
 |   } | 
 |   llvm.return | 
 | } | 
 |  | 
 | // CHECK-LABEL: define void @parallel_infinite_loop() { | 
 | // CHECK:         %[[VAL_2:.*]] = call i32 @__kmpc_global_thread_num(ptr @1) | 
 | // CHECK:         br label %[[VAL_3:.*]] | 
 | // CHECK:       omp_parallel: | 
 | // CHECK:         call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr @1, i32 0, ptr @parallel_infinite_loop..omp_par) | 
 | // CHECK:         unreachable | 
 | // CHECK:       omp.region.cont:                                  ; No predecessors! | 
 | // CHECK:         br label %[[VAL_4:.*]] | 
 | // CHECK:       omp.par.pre_finalize:                             ; preds = %[[VAL_5:.*]] | 
 | // CHECK:         br label %[[VAL_6:.*]] | 
 | // CHECK:       omp.par.exit:                                     ; preds = %[[VAL_4]] | 
 | // CHECK:         ret void | 
 | // CHECK:       } | 
 |  | 
 | // CHECK-LABEL: define internal void @parallel_infinite_loop..omp_par( | 
 | // CHECK-SAME:      ptr noalias %[[TID_ADDR:.*]], ptr noalias %[[ZERO_ADDR:.*]]) | 
 | // CHECK:       omp.par.entry: | 
 | // CHECK:         %[[VAL_7:.*]] = alloca i32, align 4 | 
 | // CHECK:         %[[VAL_8:.*]] = load i32, ptr %[[VAL_9:.*]], align 4 | 
 | // CHECK:         store i32 %[[VAL_8]], ptr %[[VAL_7]], align 4 | 
 | // CHECK:         %[[VAL_10:.*]] = load i32, ptr %[[VAL_7]], align 4 | 
 | // CHECK:         br label %[[VAL_11:.*]] | 
 | // CHECK:       omp.region.after_alloca:                          ; preds = %[[VAL_12:.*]] | 
 | // CHECK:         br label %[[VAL_13:.*]] | 
 | // CHECK:       omp.par.region:                                   ; preds = %[[VAL_11]] | 
 | // CHECK:         br label %[[VAL_14:.*]] | 
 | // CHECK:       omp.par.region1:                                  ; preds = %[[VAL_13]] | 
 | // CHECK:         br label %[[VAL_15:.*]] | 
 | // CHECK:       omp.par.region2:                                  ; preds = %[[VAL_15]], %[[VAL_14]] | 
 | // CHECK:         br label %[[VAL_15]] |