50 lines · plain
1// RUN: mlir-translate -mlir-to-llvmir -split-input-file %s | FileCheck %s2 3// tests firx for test-suite test: pr69183.f90. Makes sure we can handle inling4// private ops when the alloca block ends with a conditional branch.5 6omp.private {type = private} @_QFwsloop_privateEi_private_ref_i32 : i647 8llvm.func @wsloop_private_(%arg0: !llvm.ptr {fir.bindc_name = "y"}) attributes {fir.internal_name = "_QPwsloop_private", frame_pointer = #llvm.framePointerKind<all>, target_cpu = "x86-64"} {9 %0 = llvm.mlir.constant(1 : i64) : i6410 %3 = llvm.alloca %0 x i32 {bindc_name = "i"} : (i64) -> !llvm.ptr11 %6 = llvm.mlir.constant(1 : i32) : i3212 %7 = llvm.mlir.constant(10 : i32) : i3213 %8 = llvm.mlir.constant(0 : i32) : i3214 %cond = llvm.mlir.constant(0 : i1) : i115 llvm.cond_br %cond, ^bb1, ^bb216 17^bb1:18 llvm.br ^bb319 20^bb2:21 llvm.br ^bb322 23^bb3:24 omp.wsloop private(@_QFwsloop_privateEi_private_ref_i32 %3 -> %arg2 : !llvm.ptr) {25 omp.loop_nest (%arg4) : i32 = (%8) to (%7) inclusive step (%6) {26 omp.yield27 }28 }29 llvm.return30}31 32// CHECK: %[[INT:.*]] = alloca i32, i64 1, align 433// CHECK: br label %[[AFTER_ALLOC_BB:.*]]34 35// CHECK: [[AFTER_ALLOC_BB]]:36// CHECK: br i1 false, label %[[BB1:.*]], label %[[BB2:.*]]37 38// CHECK: [[BB1]]:39// CHECK: br label %[[BB3:.*]]40 41// CHECK: [[BB2]]:42// CHECK: br label %[[BB3:.*]]43 44// CHECK: [[BB3]]:45// CHECK: br label %[[OMP_PRIVATE_INIT:.*]]46 47// CHECK: [[OMP_PRIVATE_INIT]]:48// CHECK: br label %omp_loop.preheader49 50