brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 99f37c7 Raw
47 lines · plain
1// RUN: mlir-translate -mlir-to-llvmir %s | FileCheck %s2 3// Test that trying to outline an infinite loop doesn't lead to an assertion4// failure.5 6llvm.func @parallel_infinite_loop() -> () {7  omp.parallel {8    llvm.br ^bb19  ^bb1:10    llvm.br ^bb111  }12  llvm.return13}14 15// CHECK-LABEL: define void @parallel_infinite_loop() {16// CHECK:         %[[VAL_2:.*]] = call i32 @__kmpc_global_thread_num(ptr @1)17// CHECK:         br label %[[VAL_3:.*]]18// CHECK:       omp_parallel:19// CHECK:         call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr @1, i32 0, ptr @parallel_infinite_loop..omp_par)20// CHECK:         unreachable21// CHECK:       omp.region.cont:                                  ; No predecessors!22// CHECK:         br label %[[VAL_4:.*]]23// CHECK:       omp.par.pre_finalize:                             ; preds = %[[VAL_5:.*]]24// CHECK:         br label %[[FINI:.*]]25// CHECK:       [[OMP_PAR_EXIT:omp.par.exit]]:                                     ; preds = %[[FINI]]26// CHECK:         ret void27// CHECK:       [[FINI]]:28// CHECK:         br label %[[OMP_PAR_EXIT]]29// CHECK:       }30 31// CHECK-LABEL: define internal void @parallel_infinite_loop..omp_par(32// CHECK-SAME:      ptr noalias %[[TID_ADDR:.*]], ptr noalias %[[ZERO_ADDR:.*]])33// CHECK:       omp.par.entry:34// CHECK:         %[[VAL_7:.*]] = alloca i32, align 435// CHECK:         %[[VAL_8:.*]] = load i32, ptr %[[VAL_9:.*]], align 436// CHECK:         store i32 %[[VAL_8]], ptr %[[VAL_7]], align 437// CHECK:         %[[VAL_10:.*]] = load i32, ptr %[[VAL_7]], align 438// CHECK:         br label %[[VAL_11:.*]]39// CHECK:       omp.region.after_alloca:                          ; preds = %[[VAL_12:.*]]40// CHECK:         br label %[[VAL_13:.*]]41// CHECK:       omp.par.region:                                   ; preds = %[[VAL_11]]42// CHECK:         br label %[[VAL_14:.*]]43// CHECK:       omp.par.region1:                                  ; preds = %[[VAL_13]]44// CHECK:         br label %[[VAL_15:.*]]45// CHECK:       omp.par.region2:                                  ; preds = %[[VAL_15]], %[[VAL_14]]46// CHECK:         br label %[[VAL_15]]47