brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 6585549 Raw
53 lines · plain
1// RUN: mlir-translate --mlir-to-llvmir %s | FileCheck %s2 3// Regression test for a compiler crash. Ensure that the insertion point is set4// correctly after the barrier's cancel check5 6llvm.func @test() {7  omp.parallel {8    omp.cancel cancellation_construct_type(parallel)9    omp.barrier10    omp.terminator11  }12  llvm.return13}14 15// CHECK-LABEL: define internal void @test..omp_par16// CHECK:       omp.par.entry:17// CHECK:         %[[VAL_4:.*]] = alloca i32, align 418// CHECK:         %[[VAL_5:.*]] = load i32, ptr %[[VAL_6:.*]], align 419// CHECK:         store i32 %[[VAL_5]], ptr %[[VAL_4]], align 420// CHECK:         %[[VAL_7:.*]] = load i32, ptr %[[VAL_4]], align 421// CHECK:         br label %[[VAL_8:.*]]22// CHECK:       omp.region.after_alloca:                          ; preds = %[[VAL_9:.*]]23// CHECK:         br label %[[VAL_10:.*]]24// CHECK:       omp.par.region:                                   ; preds = %[[VAL_8]]25// CHECK:         br label %[[VAL_11:.*]]26// CHECK:       omp.par.region1:                                  ; preds = %[[VAL_10]]27// CHECK:         %[[VAL_12:.*]] = call i32 @__kmpc_global_thread_num(ptr @1)28// CHECK:         %[[VAL_13:.*]] = call i32 @__kmpc_cancel(ptr @1, i32 %[[VAL_12]], i32 1)29// CHECK:         %[[VAL_14:.*]] = icmp eq i32 %[[VAL_13]], 030// CHECK:         br i1 %[[VAL_14]], label %[[VAL_15:.*]], label %[[VAL_16:.*]]31// CHECK:       omp.par.region1.cncl:                             ; preds = %[[VAL_11]]32// CHECK:         br label %[[FINI:.*]]33// CHECK:       .fini:34// CHECK:         %[[TID:.*]] = call i32 @__kmpc_global_thread_num(ptr @1)35// CHECK:         %[[CNCL_BARRIER:.*]] = call i32 @__kmpc_cancel_barrier(ptr @2, i32 %[[TID]])36// CHECK:         br label %[[EXIT_STUB:.*]]37// CHECK:       omp.par.region1.split:                            ; preds = %[[VAL_11]]38// CHECK:         %[[VAL_20:.*]] = call i32 @__kmpc_global_thread_num(ptr @1)39// CHECK:         %[[VAL_21:.*]] = call i32 @__kmpc_cancel_barrier(ptr @3, i32 %[[VAL_20]])40// CHECK:         %[[VAL_22:.*]] = icmp eq i32 %[[VAL_21]], 041// CHECK:         br i1 %[[VAL_22]], label %[[VAL_23:.*]], label %[[VAL_24:.*]]42// CHECK:       omp.par.region1.split.cncl:                       ; preds = %[[VAL_15]]43// CHECK:         br label %[[FINI]]44// CHECK:       omp.par.region1.split.cont:                       ; preds = %[[VAL_15]]45// CHECK:         br label %[[VAL_25:.*]]46// CHECK:       omp.region.cont:                                  ; preds = %[[VAL_23]]47// CHECK:         br label %[[VAL_26:.*]]48// CHECK:       omp.par.pre_finalize:                             ; preds = %[[VAL_25]]49// CHECK:         br label %[[FINI]]50// CHECK:       omp.par.exit.exitStub:51// CHECK:         ret void52 53