[flang][test] Fix filecheck annotation typos (#92387)
This commit is contained in:
@@ -4,8 +4,8 @@
|
||||
|
||||
! PFT: 1 Subroutine test_routine: subroutine test_routine(a, b, n)
|
||||
! PFT-NEXT: 1 EndSubroutineStmt: end subroutine
|
||||
! PRF-NEXT: End Subroutine test_routine
|
||||
! PFT-NO: Program -> ProgramUnit -> SubroutineSubprogram
|
||||
! PFT-NEXT: End Subroutine test_routine
|
||||
! PFT-NOT: Program -> ProgramUnit -> SubroutineSubprogram
|
||||
|
||||
! PARSE_TREE: Program -> ProgramUnit -> SubroutineSubprogram
|
||||
! PARSE_TREE-NEXT: | SubroutineStmt
|
||||
@@ -17,7 +17,7 @@
|
||||
! PARSE_TREE-NEXT: | | ImplicitPart ->
|
||||
! PARSE_TREE-NEXT: | ExecutionPart -> Block
|
||||
! PARSE_TREE-NEXT: | EndSubroutineStmt ->
|
||||
! PARSE_TREE-NO: Subroutine test_routine: subroutine test_routine(a, b, n)
|
||||
! PARSE_TREE-NOT: Subroutine test_routine: subroutine test_routine(a, b, n)
|
||||
|
||||
subroutine test_routine(a, b, n)
|
||||
end subroutine
|
||||
|
||||
@@ -7,7 +7,7 @@ end subroutine func
|
||||
|
||||
! CHECK-NOFASTMATH-LABEL: define void @func_() local_unnamed_addr
|
||||
! CHECK-NOFASTMATH-SAME: #[[ATTRS:[0-9]+]]
|
||||
! CHECK-NOT fp-math"=
|
||||
! CHECK-NOT: fp-math"=
|
||||
|
||||
! CHECK-OFAST-LABEL: define void @func_() local_unnamed_addr
|
||||
! CHECK-OFAST-SAME: #[[ATTRS:[0-9]+]]
|
||||
|
||||
@@ -1,28 +0,0 @@
|
||||
!This test checks that when compiling an OpenMP program for the target device
|
||||
!CSE is not done across target op region boundaries. It also checks that when
|
||||
!compiling for the host CSE is done.
|
||||
!RUN: %flang_fc1 -fopenmp-is-target-device -emit-mlir -fopenmp %s -o - | fir-opt -cse | FileCheck %s -check-prefix=CHECK-DEVICE
|
||||
!RUN: %flang_fc1 -emit-mlir -fopenmp %s -o - | fir-opt -cse | FileCheck %s -check-prefix=CHECK-HOST
|
||||
!RUN: bbc -fopenmp-is-target-device -emit-fir -fopenmp %s -o - | fir-opt -cse | FileCheck %s -check-prefix=CHECK-DEVICE
|
||||
!RUN: bbc -emit-fir -fopenmp %s -o - | fir-opt -cse | FileCheck %s -check-prefix=CHECK-HOST
|
||||
|
||||
!Constant should be present inside target region.
|
||||
!CHECK-DEVICE: omp.target
|
||||
!CHECK-DEVICE: arith.constant 10
|
||||
!CHECK-DEVICE: omp.terminator
|
||||
|
||||
!Constant should not be present inside target region.
|
||||
!CHECK-HOST: omp.target
|
||||
!CHECK-NOT-HOST: arith.constant 10
|
||||
!CHECK-HOST: omp.terminator
|
||||
|
||||
subroutine writeIndex(sum)
|
||||
integer :: sum
|
||||
integer :: myconst1
|
||||
integer :: myconst2
|
||||
myconst1 = 10
|
||||
!$omp target map(from:myconst2)
|
||||
myconst2 = 10
|
||||
!$omp end target
|
||||
sum = myconst2 + myconst2
|
||||
end subroutine writeIndex
|
||||
@@ -130,13 +130,13 @@
|
||||
! RUN: %flang -### %s -o %t 2>&1 \
|
||||
! RUN: -fopenmp --offload-arch=gfx90a \
|
||||
! RUN: -fopenmp-targets=amdgcn-amd-amdhsa \
|
||||
! RUN: -fopenmp-target-debug -nogpulib\
|
||||
! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG
|
||||
! RUN: -fopenmp-target-debug=111 -nogpulib\
|
||||
! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG-EQ
|
||||
! RUN: %flang -### %s -o %t 2>&1 \
|
||||
! RUN: -fopenmp --offload-arch=sm_70 \
|
||||
! RUN: -fopenmp-targets=nvptx64-nvidia-cuda \
|
||||
! RUN: -fopenmp-target-debug \
|
||||
! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG
|
||||
! RUN: -fopenmp-target-debug=111 \
|
||||
! RUN: | FileCheck %s --check-prefixes=CHECK-TARGET-DEBUG-EQ
|
||||
! CHECK-TARGET-DEBUG-EQ: "{{[^"]*}}flang" "-fc1" {{.*}} "-fopenmp" {{.*}} "-fopenmp-is-target-device" "-fopenmp-target-debug=111" {{.*}}.f90"
|
||||
|
||||
! RUN: %flang -S -### %s -o %t 2>&1 \
|
||||
|
||||
@@ -145,9 +145,9 @@ module m
|
||||
subroutine s12(x,y)
|
||||
class(t), intent(in) :: x
|
||||
class(*), intent(in) :: y
|
||||
!CHERK: error: Must be a constant value
|
||||
!CHECK: error: Must be a constant value
|
||||
integer, parameter :: bad1 = storage_size(x)
|
||||
!CHERK: error: Must be a constant value
|
||||
!CHECK: error: Must be a constant value
|
||||
integer, parameter :: bad2 = storage_size(y)
|
||||
end subroutine
|
||||
subroutine s13
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// RUN: tco %s | FileCheck %s
|
||||
|
||||
// CHECK-LINE: define void @f1
|
||||
// CHECK-LABEL: define void @f1
|
||||
// CHECK: (ptr captures(none) %[[A:[^,]*]], {{.*}}, float %[[F:.*]])
|
||||
func.func @f1(%a : !fir.ref<!fir.array<?x?xf32>>, %n : index, %m : index, %o : index, %p : index, %f : f32) {
|
||||
%c1 = arith.constant 1 : index
|
||||
@@ -22,7 +22,7 @@ func.func @f1(%a : !fir.ref<!fir.array<?x?xf32>>, %n : index, %m : index, %o : i
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-LINE: define void @f2
|
||||
// CHECK-LABEL: define void @f2
|
||||
// CHECK: (ptr captures(none) %[[A:[^,]*]], {{.*}}, float %[[F:.*]])
|
||||
func.func @f2(%a : !fir.ref<!fir.array<?x?xf32>>, %b : !fir.ref<!fir.array<?x?xf32>>, %n : index, %m : index, %o : index, %p : index, %f : f32) {
|
||||
%c1 = arith.constant 1 : index
|
||||
@@ -46,7 +46,7 @@ func.func @f2(%a : !fir.ref<!fir.array<?x?xf32>>, %b : !fir.ref<!fir.array<?x?xf
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-LINE: define void @f3
|
||||
// CHECK-LABEL: define void @f3
|
||||
// CHECK: (ptr captures(none) %[[A:[^,]*]], {{.*}}, float %[[F:.*]])
|
||||
func.func @f3(%a : !fir.ref<!fir.array<?x?xf32>>, %b : !fir.ref<!fir.array<?x?xf32>>, %n : index, %m : index, %o : index, %p : index, %f : f32) {
|
||||
%c1 = arith.constant 1 : index
|
||||
@@ -71,7 +71,7 @@ func.func @f3(%a : !fir.ref<!fir.array<?x?xf32>>, %b : !fir.ref<!fir.array<?x?xf
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-LINE: define void @f4
|
||||
// CHECK-LABEL: define void @f4
|
||||
// CHECK: (ptr captures(none) %[[A:[^,]*]], {{.*}}, float %[[F:.*]])
|
||||
func.func @f4(%a : !fir.ref<!fir.array<?x?xf32>>, %b : !fir.ref<!fir.array<?x?xf32>>, %n : index, %m : index, %o : index, %p : index, %f : f32) {
|
||||
%c1 = arith.constant 1 : index
|
||||
@@ -101,7 +101,7 @@ func.func @f4(%a : !fir.ref<!fir.array<?x?xf32>>, %b : !fir.ref<!fir.array<?x?xf
|
||||
// Array expression assignment with potentially non contiguous arrays (e.g.
|
||||
// `a = b + f`, with and v assumed shapes.
|
||||
// Tests that the stride from the descriptor is used.
|
||||
// CHECK-LINE: define void @f5
|
||||
// CHECK-LABEL: define void @f5
|
||||
// CHECK: (ptr %[[A:.*]], ptr %[[B:.*]], float %[[F:.*]])
|
||||
func.func @f5(%arg0: !fir.box<!fir.array<?xf32>>, %arg1: !fir.box<!fir.array<?xf32>>, %arg2: f32) {
|
||||
%c0 = arith.constant 0 : index
|
||||
@@ -134,7 +134,7 @@ func.func @f5(%arg0: !fir.box<!fir.array<?xf32>>, %arg1: !fir.box<!fir.array<?xf
|
||||
// Overlapping array expression assignment with a potentially non
|
||||
// contiguous array (e.g. `a(2:10:1) = a(1:9:1) + f`, with a assumed shape).
|
||||
// Test that a temp is created.
|
||||
// CHECK-LINE: define void @f6
|
||||
// CHECK-LABEL: define void @f6
|
||||
// CHECK: (ptr %[[A:[^,]*]], float %[[F:.*]])
|
||||
func.func @f6(%arg0: !fir.box<!fir.array<?xf32>>, %arg1: f32) {
|
||||
%c0 = arith.constant 0 : index
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// RUN: tco %s | FileCheck %s
|
||||
|
||||
// CHECK-LINE: define i64 @_QTtP.mem.size(i32 %0, i16 %1)
|
||||
// CHECK-LABEL: define i64 @_QTtP.mem.size(i32 %0, i16 %1)
|
||||
func.func @_QTtP.mem.size(%0 : i32, %1 : i16) -> index {
|
||||
%2 = call @_QTtP.f1.size(%0, %1) : (i32, i16) -> index
|
||||
%3 = call @_QTtP.f2.size(%0, %1) : (i32, i16) -> index
|
||||
@@ -8,25 +8,25 @@ func.func @_QTtP.mem.size(%0 : i32, %1 : i16) -> index {
|
||||
// CHECK: ret i64 8
|
||||
return %4 : index
|
||||
}
|
||||
// CHECK-LINE: define i64 @_QTtP.f1.size(i32 %0, i16 %1)
|
||||
// CHECK-LABEL: define i64 @_QTtP.f1.size(i32 %0, i16 %1)
|
||||
func.func @_QTtP.f1.size(%0 : i32, %1 : i16) -> index {
|
||||
%2 = arith.constant 4 : index
|
||||
// CHECK: ret i64 4
|
||||
return %2 : index
|
||||
}
|
||||
// CHECK-LINE: define i64 @_QTtP.f2.size(i32 %0, i16 %1)
|
||||
// CHECK-LABEL: define i64 @_QTtP.f2.size(i32 %0, i16 %1)
|
||||
func.func @_QTtP.f2.size(%0 : i32, %1 : i16) -> index {
|
||||
%2 = arith.constant 4 : index
|
||||
// CHECK: ret i64 4
|
||||
return %2 : index
|
||||
}
|
||||
// CHECK-LINE: define i32 @_QTtP.f1.offset(i32 %0, i16 %1)
|
||||
// CHECK-LABEL: define i32 @_QTtP.f1.offset(i32 %0, i16 %1)
|
||||
func.func @_QTtP.f1.offset(%0 : i32, %1 : i16) -> i32 {
|
||||
%2 = arith.constant 0 : i32
|
||||
// CHECK: ret i32 0
|
||||
return %2 : i32
|
||||
}
|
||||
// CHECK-LINE: define i32 @_QTtP.f2.offset(i32 %0, i16 %1)
|
||||
// CHECK-LABEL: define i32 @_QTtP.f2.offset(i32 %0, i16 %1)
|
||||
func.func @_QTtP.f2.offset(%0 : i32, %1 : i16) -> i32 {
|
||||
%2 = arith.constant 4 : i32
|
||||
// CHECK: ret i32 4
|
||||
@@ -44,7 +44,7 @@ func.func @_QTtP.f2.offset(%0 : i32, %1 : i16) -> i32 {
|
||||
// var%f1 = 4
|
||||
// end program p
|
||||
|
||||
// CHECK-LINE: define void @_QQmain(i32 %0, i16 %1)
|
||||
// CHECK-LABEL: define void @_QQmain(i32 %0, i16 %1)
|
||||
func.func @_QQmain(%arg0 : i32, %arg1 : i16) {
|
||||
// CHECK: %[[size:.*]] = call i64 @_QTtP.mem.size(i32 %0, i16 %1)
|
||||
// CHECK: %[[alloc:.*]] = alloca i8, i64 %[[size]]
|
||||
@@ -56,7 +56,7 @@ func.func @_QQmain(%arg0 : i32, %arg1 : i16) {
|
||||
return
|
||||
}
|
||||
|
||||
// CHECK-LINE: define i64 @_QTt1P.mem.size(i32 %0, i32 %1)
|
||||
// CHECK-LABEL: define i64 @_QTt1P.mem.size(i32 %0, i32 %1)
|
||||
func.func @_QTt1P.mem.size(%0 : i32, %1 : i32) -> index {
|
||||
// CHECK: call i64 @_QTt1P.f1.size
|
||||
%2 = call @_QTt1P.f1.size(%0, %1) : (i32, i32) -> index
|
||||
@@ -65,22 +65,22 @@ func.func @_QTt1P.mem.size(%0 : i32, %1 : i32) -> index {
|
||||
%4 = arith.addi %2, %3 : index
|
||||
return %4 : index
|
||||
}
|
||||
// CHECK-LINE: define i64 @_QTt1P.f1.size(i32 %0, i32 %1)
|
||||
// CHECK-LABEL: define i64 @_QTt1P.f1.size(i32 %0, i32 %1)
|
||||
func.func @_QTt1P.f1.size(%0 : i32, %1 : i32) -> index {
|
||||
%2 = fir.convert %0 : (i32) -> index
|
||||
return %2 : index
|
||||
}
|
||||
// CHECK-LINE: define i64 @_QTt1P.f2.size(i32 %0, i32 %1)
|
||||
// CHECK-LABEL: define i64 @_QTt1P.f2.size(i32 %0, i32 %1)
|
||||
func.func @_QTt1P.f2.size(%0 : i32, %1 : i32) -> index {
|
||||
%2 = fir.convert %1 : (i32) -> index
|
||||
return %2 : index
|
||||
}
|
||||
// CHECK-LINE: define i32 @_QTt1P.f1.offset(i32 %0, i32 %1)
|
||||
// CHECK-LABEL: define i32 @_QTt1P.f1.offset(i32 %0, i32 %1)
|
||||
func.func @_QTt1P.f1.offset(%0 : i32, %1 : i32) -> i32 {
|
||||
%2 = arith.constant 0 : i32
|
||||
return %2 : i32
|
||||
}
|
||||
// CHECK-LINE: define i32 @_QTt1P.f2.offset(i32 %0, i32 %1)
|
||||
// CHECK-LABEL: define i32 @_QTt1P.f2.offset(i32 %0, i32 %1)
|
||||
func.func @_QTt1P.f2.offset(%0 : i32, %1 : i32) -> i32 {
|
||||
return %0 : i32
|
||||
}
|
||||
@@ -97,7 +97,7 @@ func.func @_QTt1P.f2.offset(%0 : i32, %1 : i32) -> i32 {
|
||||
|
||||
func.func private @bar(!fir.ref<!fir.char<1,?>>)
|
||||
|
||||
// CHECK-LINE: define i8* @_QPfoo(i32 %0, i32 %1)
|
||||
// CHECK-LABEL: define void @_QPfoo(i32 %0, i32 %1)
|
||||
func.func @_QPfoo(%arg0 : i32, %arg1 : i32) {
|
||||
// CHECK: %[[size:.*]] = call i64 @_QTt1P.mem.size(i32 %0, i32 %1)
|
||||
// CHECK: %[[alloc:.*]] = alloca i8, i64 %[[size]]
|
||||
|
||||
@@ -33,4 +33,4 @@ func.func private @foo() -> none
|
||||
|
||||
|
||||
// CHECK: define void @repro(i8 %0, i8 %1)
|
||||
// CHECK-NEXT ret void
|
||||
// CHECK-NEXT: ret void
|
||||
|
||||
@@ -39,9 +39,9 @@ func.func @gen8() -> complex<f64> {
|
||||
%c1 = arith.constant 1 : i32
|
||||
%5 = fir.insert_value %4, %2, [1 : index] : (complex<f64>, f64) -> complex<f64>
|
||||
// I32: store { double, double } { double -4.000000e+00, double 1.000000e+00 }
|
||||
// I64: store { double, double } { double -4.000000e+00, double 1.000000e+00 }
|
||||
// I64: %[[load:.*]] = load { double, double }
|
||||
// I64: ret { double, double } %[[load]]
|
||||
// X64: store { double, double } { double -4.000000e+00, double 1.000000e+00 }
|
||||
// X64: %[[load:.*]] = load { double, double }
|
||||
// X64: ret { double, double } %[[load]]
|
||||
// AARCH64: ret { double, double }
|
||||
// PPC: ret { double, double }
|
||||
return %5 : complex<f64>
|
||||
|
||||
@@ -81,7 +81,7 @@ end subroutine
|
||||
! CHECK: %[[BOX_DECL:.*]]:2 = hlfir.declare %[[BOX]] {data_attr = #cuf.cuda<pinned>, fortran_attrs = #fir.var_attrs<allocatable>, uniq_name = "_QFsub3Ea"} : (!fir.ref<!fir.box<!fir.heap<!fir.array<?x?xi32>>>>) -> (!fir.ref<!fir.box<!fir.heap<!fir.array<?x?xi32>>>>, !fir.ref<!fir.box<!fir.heap<!fir.array<?x?xi32>>>>)
|
||||
! CHECK: %[[PLOG:.*]] = fir.alloca !fir.logical<4> {bindc_name = "plog", uniq_name = "_QFsub3Eplog"}
|
||||
! CHECK: %[[PLOG_DECL:.*]]:2 = hlfir.declare %{{.*}} {uniq_name = "_QFsub3Eplog"} : (!fir.ref<!fir.logical<4>>) -> (!fir.ref<!fir.logical<4>>, !fir.ref<!fir.logical<4>>)
|
||||
! CHECK-2: fir.call @_FortranAAllocatableSetBounds
|
||||
! CHECK-COUNT-2: fir.call @_FortranAAllocatableSetBounds
|
||||
! CHECK: %{{.*}} = cuf.allocate %[[BOX_DECL]]#1 : !fir.ref<!fir.box<!fir.heap<!fir.array<?x?xi32>>>> pinned(%[[PLOG_DECL]]#1 : !fir.ref<!fir.logical<4>>) {data_attr = #cuf.cuda<pinned>} -> i32
|
||||
! CHECK: fir.if %{{.*}} {
|
||||
! CHECK: %{{.*}} = cuf.deallocate %[[BOX_DECL]]#1 : !fir.ref<!fir.box<!fir.heap<!fir.array<?x?xi32>>>> {data_attr = #cuf.cuda<pinned>} -> i32
|
||||
|
||||
@@ -191,11 +191,11 @@ end
|
||||
! Test calls to user procedures with intrinsic interfaces
|
||||
! -----------------------------------------------------------------------------
|
||||
|
||||
! CHECK-NAME: func.func @_QPintrinsic_iface()
|
||||
! CHECK-LABEL: func.func @_QPintrinsic_iface()
|
||||
subroutine intrinsic_iface()
|
||||
intrinsic acos
|
||||
real :: x
|
||||
procedure(acos) :: proc
|
||||
x = proc(1.0)
|
||||
end subroutine
|
||||
! CHECK" fir.call @_QPproc(%{{.*}}) {{.*}}: (!fir.ref<f32>) -> f32
|
||||
! CHECK: fir.call @_QPproc(%{{.*}}) {{.*}}: (!fir.ref<f32>) -> f32
|
||||
|
||||
@@ -86,7 +86,7 @@ end subroutine
|
||||
! CHECK-NEXT: hlfir.assign %[[EXPR]] to %[[OUT]]#0 : !hlfir.expr<2xi32>, !fir.ref<!fir.array<2xi32>>
|
||||
! CHECK-NEXT: hlfir.destroy %[[EXPR]] : !hlfir.expr<2xi32>
|
||||
! CHECK-NEXT: return
|
||||
! CHECK-nEXT: }
|
||||
! CHECK-NEXT: }
|
||||
|
||||
! back argument as .true.
|
||||
subroutine maxloc_back(a, s)
|
||||
|
||||
@@ -83,7 +83,7 @@ end subroutine
|
||||
! CHECK-NEXT: hlfir.assign %[[EXPR]] to %[[OUT]]#0 : !hlfir.expr<2xi32>, !fir.ref<!fir.array<2xi32>>
|
||||
! CHECK-NEXT: hlfir.destroy %[[EXPR]] : !hlfir.expr<2xi32>
|
||||
! CHECK-NEXT: return
|
||||
! CHECK-nEXT: }
|
||||
! CHECK-NEXT: }
|
||||
|
||||
subroutine maxval6(a, s, d)
|
||||
integer, pointer :: d
|
||||
|
||||
@@ -86,7 +86,7 @@ end subroutine
|
||||
! CHECK-NEXT: hlfir.assign %[[EXPR]] to %[[OUT]]#0 : !hlfir.expr<2xi32>, !fir.ref<!fir.array<2xi32>>
|
||||
! CHECK-NEXT: hlfir.destroy %[[EXPR]] : !hlfir.expr<2xi32>
|
||||
! CHECK-NEXT: return
|
||||
! CHECK-nEXT: }
|
||||
! CHECK-NEXT: }
|
||||
|
||||
! back argument as .true.
|
||||
subroutine minloc_back(a, s)
|
||||
|
||||
@@ -83,7 +83,7 @@ end subroutine
|
||||
! CHECK-NEXT: hlfir.assign %[[EXPR]] to %[[OUT]]#0 : !hlfir.expr<2xi32>, !fir.ref<!fir.array<2xi32>>
|
||||
! CHECK-NEXT: hlfir.destroy %[[EXPR]] : !hlfir.expr<2xi32>
|
||||
! CHECK-NEXT: return
|
||||
! CHECK-nEXT: }
|
||||
! CHECK-NEXT: }
|
||||
|
||||
subroutine minval6(a, s, d)
|
||||
integer, pointer :: d
|
||||
|
||||
@@ -83,7 +83,7 @@ end subroutine
|
||||
! CHECK-NEXT: hlfir.assign %[[EXPR]] to %[[OUT]]#0 : !hlfir.expr<2xi32>, !fir.ref<!fir.array<2xi32>>
|
||||
! CHECK-NEXT: hlfir.destroy %[[EXPR]] : !hlfir.expr<2xi32>
|
||||
! CHECK-NEXT: return
|
||||
! CHECK-nEXT: }
|
||||
! CHECK-NEXT: }
|
||||
|
||||
subroutine sum6(a, s, d)
|
||||
integer, pointer :: d
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
|
||||
|
||||
! CHECK-LABLE: adjustl_test
|
||||
! CHECK-LABEL: adjustl_test
|
||||
subroutine adjustl_test
|
||||
character(len=12) :: adjust_str = ' 0123456789'
|
||||
! CHECK: %[[strBox:.*]] = fir.alloca !fir.box<!fir.heap<!fir.char<1,?>>>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
|
||||
|
||||
! CHECK-LABLE: adjustr_test
|
||||
! CHECK-LABEL: adjustr_test
|
||||
subroutine adjustr_test
|
||||
character(len=12) :: adjust_str = '0123456789 '
|
||||
! CHECK: %[[strBox:.*]] = fir.alloca !fir.box<!fir.heap<!fir.char<1,?>>>
|
||||
|
||||
@@ -27,5 +27,5 @@ rslt = any(mask, d)
|
||||
! CHECK: fir.call @_FortranAAnyDim(%[[a6:.*]], %[[a7:.*]], %[[a1:.*]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<!fir.box<none>>, !fir.box<none>, i32, !fir.ref<i8>, i32) -> ()
|
||||
! CHECK-DAG: %[[a10:.*]] = fir.load %[[a0:.*]] : !fir.ref<!fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>>
|
||||
! CHECK-DAG: %[[a12:.*]] = fir.box_addr %[[a10:.*]] : (!fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>) -> !fir.heap<!fir.array<?x!fir.logical<4>>>
|
||||
! CHECK-DAG fir.freemem %[[a12:.*]]
|
||||
! CHECK-DAG: fir.freemem %[[a12:.*]]
|
||||
end subroutine
|
||||
|
||||
@@ -28,5 +28,5 @@ subroutine parity_test2(mask, d, rslt)
|
||||
! CHECK: fir.call @_FortranAParityDim(%[[a6:.*]], %[[a7:.*]], %[[a1:.*]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<!fir.box<none>>, !fir.box<none>, i32, !fir.ref<i8>, i32) -> ()
|
||||
! CHECK-DAG: %[[a10:.*]] = fir.load %[[a0:.*]] : !fir.ref<!fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>>
|
||||
! CHECK-DAG: %[[a12:.*]] = fir.box_addr %[[a10:.*]] : (!fir.box<!fir.heap<!fir.array<?x!fir.logical<4>>>>) -> !fir.heap<!fir.array<?x!fir.logical<4>>>
|
||||
! CHECK-DAG fir.freemem %[[a12:.*]]
|
||||
! CHECK-DAG: fir.freemem %[[a12:.*]]
|
||||
end subroutine parity_test2
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
! Test storage_size with characters
|
||||
! RUN: bbc -emit-hlfir %s -o - | FileCheck %s
|
||||
|
||||
! check-label: func.func @_QPtest_storage_size
|
||||
! CHECK-LABEL: func.func @_QPtest_storage_size
|
||||
subroutine test_storage_size(n)
|
||||
interface
|
||||
function return_char(l)
|
||||
|
||||
@@ -25,7 +25,6 @@ end
|
||||
! CHECK: acc.set default_async(%[[C1]] : i32)
|
||||
|
||||
! CHECK: %[[C1:.*]] = arith.constant 1 : i32
|
||||
! FIR: %[[LOAD_L:.*]] = fir.load %[[L]] : !fir.ref<!fir.logical<4>>
|
||||
! HLFIR: %[[LOAD_L:.*]] = fir.load %[[DECLL]]#0 : !fir.ref<!fir.logical<4>>
|
||||
! CHECK: %[[CONV_L:.*]] = fir.convert %[[LOAD_L]] : (!fir.logical<4>) -> i1
|
||||
! CHECK: acc.set default_async(%[[C1]] : i32) if(%[[CONV_L]])
|
||||
|
||||
@@ -337,7 +337,7 @@ end
|
||||
! CHECK: omp.terminator
|
||||
! CHECK-NEXT: }
|
||||
! CHECK: omp.terminator
|
||||
! CHECK-NEXT }
|
||||
! CHECK-NEXT: }
|
||||
! CHECK: }
|
||||
subroutine ss9() ! EXIT inside OpenMP parallel (inside parallel)
|
||||
integer :: x
|
||||
|
||||
@@ -34,7 +34,7 @@ end program
|
||||
! CHECK: fir.store %[[VAL_7]] to %[[ALLOC]] : !fir.ref<!fir.box<!fir.array<2xi32>>>
|
||||
! CHECK: omp.yield(%[[ALLOC]] : !fir.ref<!fir.box<!fir.array<2xi32>>>)
|
||||
|
||||
! CHECK-LABEL } combiner {
|
||||
! CHECK-LABEL: } combiner {
|
||||
! CHECK: ^bb0(%[[VAL_0:.*]]: !fir.ref<!fir.box<!fir.array<2xi32>>>, %[[VAL_1:.*]]: !fir.ref<!fir.box<!fir.array<2xi32>>>):
|
||||
! CHECK: %[[VAL_2:.*]] = fir.load %[[VAL_0]] : !fir.ref<!fir.box<!fir.array<2xi32>>>
|
||||
! CHECK: %[[VAL_3:.*]] = fir.load %[[VAL_1]] : !fir.ref<!fir.box<!fir.array<2xi32>>>
|
||||
@@ -65,7 +65,7 @@ end program
|
||||
! CHECK: omp.yield
|
||||
! CHECK: }
|
||||
|
||||
! CHECK-LABEL func.func @_QQmain() attributes {fir.bindc_name = "reduce"} {
|
||||
! CHECK-LABEL: func.func @_QQmain() attributes {fir.bindc_name = "reduce"} {
|
||||
! CHECK: %[[VAL_0:.*]] = fir.address_of(@_QFEi) : !fir.ref<i32>
|
||||
! CHECK: %[[VAL_1:.*]]:2 = hlfir.declare %[[VAL_0]] {uniq_name = "_QFEi"} : (!fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
|
||||
! CHECK: %[[VAL_2:.*]] = fir.address_of(@_QFEr) : !fir.ref<!fir.array<2xi32>>
|
||||
|
||||
@@ -96,7 +96,7 @@ subroutine s(i,j,k,ii,jj,kk,a1,a2,a3,a4,a5,a6,a7)
|
||||
|
||||
end subroutine s
|
||||
|
||||
! CHECK-LABEL range
|
||||
! CHECK-LABEL: range
|
||||
subroutine range()
|
||||
! Compile-time initalized arrays
|
||||
integer, dimension(10) :: a0
|
||||
@@ -114,6 +114,29 @@ subroutine range()
|
||||
data c1/6 * (0.0, 0.0)/
|
||||
end subroutine range
|
||||
|
||||
! CHECK-LABEL: rangeglobal
|
||||
subroutine rangeGlobal()
|
||||
integer, dimension(6) :: a0 = (/ 1, 1, 2, 2, 3, 3 /)
|
||||
|
||||
end subroutine rangeGlobal
|
||||
|
||||
! CHECK-LABEL: hugeglobal
|
||||
subroutine hugeGlobal()
|
||||
integer, parameter :: D = 500
|
||||
integer, dimension(D, D) :: a
|
||||
|
||||
a = reshape((/(i, i = 1, D * D)/), shape(a))
|
||||
end subroutine hugeGlobal
|
||||
|
||||
block data
|
||||
real(selected_real_kind(6)) :: x(5,5)
|
||||
common /block/ x
|
||||
data x(1,1), x(2,1), x(3,1) / 1, 1, 0 /
|
||||
data x(1,2), x(2,2), x(4,2) / 1, 1, 2.4 /
|
||||
data x(1,3), x(2,3), x(4,3) / 1, 1, 2.4 /
|
||||
data x(4,4) / 2.4 /
|
||||
end
|
||||
|
||||
! c1 data
|
||||
! CHECK: fir.global internal @_QFrangeEc1(dense<(0.000000e+00,0.000000e+00)> : tensor<3x2xcomplex<f32>>) : !fir.array<2x3xcomplex<f32>>
|
||||
|
||||
@@ -132,27 +155,6 @@ end subroutine range
|
||||
! c0 array constructor
|
||||
! CHECK: fir.global internal @_QQro.2x3xz4.{{.*}}(dense<{{\[}}[(1.000000e+00,1.500000e+00), (2.000000e+00,2.500000e+00)], [(3.000000e+00,3.500000e+00), (4.000000e+00,4.500000e+00)], [(5.000000e+00,5.500000e+00), (6.000000e+00,6.500000e+00)]]> : tensor<3x2xcomplex<f32>>) constant : !fir.array<2x3xcomplex<f32>>
|
||||
|
||||
! CHECK-LABEL rangeGlobal
|
||||
subroutine rangeGlobal()
|
||||
! CHECK: fir.global internal @_QFrangeglobal{{.*}}(dense<[1, 1, 2, 2, 3, 3]> : tensor<6xi32>) : !fir.array<6xi32>
|
||||
integer, dimension(6) :: a0 = (/ 1, 1, 2, 2, 3, 3 /)
|
||||
|
||||
end subroutine rangeGlobal
|
||||
|
||||
! CHECK-LABEL hugeGlobal
|
||||
subroutine hugeGlobal()
|
||||
integer, parameter :: D = 500
|
||||
integer, dimension(D, D) :: a
|
||||
|
||||
! CHECK: fir.global internal @_QQro.500x500xi4.{{.*}}(dense<{{.*}}> : tensor<500x500xi32>) constant : !fir.array<500x500xi32>
|
||||
a = reshape((/(i, i = 1, D * D)/), shape(a))
|
||||
end subroutine hugeGlobal
|
||||
|
||||
block data
|
||||
real(selected_real_kind(6)) :: x(5,5)
|
||||
common /block/ x
|
||||
data x(1,1), x(2,1), x(3,1) / 1, 1, 0 /
|
||||
data x(1,2), x(2,2), x(4,2) / 1, 1, 2.4 /
|
||||
data x(1,3), x(2,3), x(4,3) / 1, 1, 2.4 /
|
||||
data x(4,4) / 2.4 /
|
||||
end
|
||||
|
||||
@@ -115,7 +115,7 @@ subroutine issue772(a, x)
|
||||
! CHECK: fir.call @_QPibar()
|
||||
! CHECK-NOT: fir.call @_QPibar()
|
||||
print *, a(20)%b(1:ibar():1)
|
||||
! CHECK return
|
||||
! CHECK: return
|
||||
end subroutine
|
||||
|
||||
! -----------------------------------------------------------------------------
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
! RUN: bbc -emit-fir -hlfir=false %s -o - | FileCheck %s
|
||||
|
||||
! check the lowering of a RETURN in the body of a SUBROUTINE
|
||||
! CHECK-LABEL one
|
||||
! CHECK-LABEL: one
|
||||
subroutine one(a,b,c)
|
||||
d = 1.0
|
||||
if (a .ne. b) then
|
||||
|
||||
@@ -220,17 +220,17 @@ end subroutine
|
||||
! end type
|
||||
|
||||
!contains
|
||||
! ! cHECK-LABEL: func @_QMcomponent_with_user_def_assignPtest(
|
||||
! ! cHECK-SAME: %[[t1:.*]]: !fir.ref<!fir.type<_QMcomponent_with_user_def_assignTt{a:!fir.type<_QMcomponent_with_user_def_assignTt0{i:i32,j:i32}>,i:i32}>>{{.*}}, %[[t2:.*]]: !fir.ref<!fir.type<_QMcomponent_with_user_def_assignTt{a:!fir.type<_QMcomponent_with_user_def_assignTt0{i:i32,j:i32}>,i:i32}>>{{.*}}) {
|
||||
! COM: CHECK-LABEL: func @_QMcomponent_with_user_def_assignPtest(
|
||||
! COM: CHECK-SAME: %[[t1:.*]]: !fir.ref<!fir.type<_QMcomponent_with_user_def_assignTt{a:!fir.type<_QMcomponent_with_user_def_assignTt0{i:i32,j:i32}>,i:i32}>>{{.*}}, %[[t2:.*]]: !fir.ref<!fir.type<_QMcomponent_with_user_def_assignTt{a:!fir.type<_QMcomponent_with_user_def_assignTt0{i:i32,j:i32}>,i:i32}>>{{.*}}) {
|
||||
! subroutine test(t1, t2)
|
||||
! type(t) :: t1, t2
|
||||
! ! cHECK: %[[tmpBox:.*]] = fir.alloca !fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>
|
||||
! ! cHECK: %[[t1Box:.*]] = fir.embox %[[t1]] : (!fir.ref<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>) -> !fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>
|
||||
! ! cHECK: %[[t2Box:.*]] = fir.embox %[[t2]] : (!fir.ref<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>) -> !fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>
|
||||
! ! cHECK: fir.store %[[t1Box]] to %[[tmpBox]] : !fir.ref<!fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>>
|
||||
! ! cHECK: %[[lhs:.*]] = fir.convert %[[tmpBox]] : (!fir.ref<!fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>>) -> !fir.ref<!fir.box<none>>
|
||||
! ! cHECK: %[[rhs:.*]] = fir.convert %[[t2Box]] : (!fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>) -> !fir.box<none>
|
||||
! ! cHECK: fir.call @_FortranAAssign(%[[lhs]], %[[rhs]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<!fir.box<none>>, !fir.box<none>, !fir.ref<i8>, i32) -> ()
|
||||
! COM: CHECK: %[[tmpBox:.*]] = fir.alloca !fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>
|
||||
! COM: CHECK: %[[t1Box:.*]] = fir.embox %[[t1]] : (!fir.ref<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>) -> !fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>
|
||||
! COM: CHECK: %[[t2Box:.*]] = fir.embox %[[t2]] : (!fir.ref<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>) -> !fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>
|
||||
! COM: CHECK: fir.store %[[t1Box]] to %[[tmpBox]] : !fir.ref<!fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>>
|
||||
! COM: CHECK: %[[lhs:.*]] = fir.convert %[[tmpBox]] : (!fir.ref<!fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>>) -> !fir.ref<!fir.box<none>>
|
||||
! COM: CHECK: %[[rhs:.*]] = fir.convert %[[t2Box]] : (!fir.box<!fir.type<_QMcomponent_with_user_def_assignTt{{.*}}>>) -> !fir.box<none>
|
||||
! COM: CHECK: fir.call @_FortranAAssign(%[[lhs]], %[[rhs]], %{{.*}}, %{{.*}}) {{.*}}: (!fir.ref<!fir.box<none>>, !fir.box<none>, !fir.ref<i8>, i32) -> ()
|
||||
! t1 = t2
|
||||
! end subroutine
|
||||
!end module
|
||||
|
||||
@@ -10,7 +10,7 @@ end module
|
||||
! CHECK-LABEL: fir.global @_QMmodule_without_initEi : !fir.array<8xi8> {
|
||||
! CHECK: %0 = fir.zero_bits !fir.array<8xi8>
|
||||
! CHECK: fir.has_value %0 : !fir.array<8xi8>
|
||||
! CHECK}
|
||||
! CHECK: }
|
||||
|
||||
|
||||
subroutine test_eqv_init
|
||||
|
||||
@@ -18,4 +18,4 @@ end
|
||||
! CHECK: = fir.array_fetch %[[a2]], %{{.*}}, %{{.*}} : (!fir.array<4x4xi32>, index, index) -> i32
|
||||
! CHECK: = fir.array_fetch %[[a3]], %{{.*}}, %{{.*}} : (!fir.array<4x4xi32>, index, index) -> i32
|
||||
! CHECK: = fir.array_update %{{.*}}, %{{.*}}, %{{.*}} : (!fir.array<4x4xi32>, i32, index, index) -> !fir.array<4x4xi32>
|
||||
! CHECK : fir.array_merge_store %[[a1]], %[[av]] to %[[a]] : !fir.array<4x4xi32>, !fir.array<4x4xi32>, !fir.ref<!fir.array<4x4xi32>>
|
||||
! CHECK: fir.array_merge_store %[[a1]], %[[av]] to %[[a]] : !fir.array<4x4xi32>, !fir.array<4x4xi32>, !fir.ref<!fir.array<4x4xi32>>
|
||||
|
||||
@@ -19,15 +19,15 @@ real function m1use()
|
||||
end function
|
||||
|
||||
! TODO: test equivalences once front-end fix in module file is pushed.
|
||||
!! CHECK-LABEL func @_QPmodeq1use()
|
||||
! COM: CHECK-LABEL: func @_QPmodeq1use()
|
||||
!real function modEq1use()
|
||||
! use modEq1
|
||||
! ! CHECK-DAG fir.address_of(@_QMmodeq1Ex1) : !fir.ref<tuple<!fir.array<36xi8>, !fir.array<40xi8>>>
|
||||
! ! CHECK-DAG fir.address_of(@_QMmodeq1Ey1) : !fir.ref<tuple<!fir.array<16xi8>, !fir.array<24xi8>>>
|
||||
! COM: CHECK-DAG: fir.address_of(@_QMmodeq1Ex1) : !fir.ref<tuple<!fir.array<36xi8>, !fir.array<40xi8>>>
|
||||
! COM: CHECK-DAG: fir.address_of(@_QMmodeq1Ey1) : !fir.ref<tuple<!fir.array<16xi8>, !fir.array<24xi8>>>
|
||||
! modEq1use = x2(1) + y1
|
||||
!end function
|
||||
! CHECK-DAG fir.global @_QMmodeq1Ex1 : tuple<!fir.array<36xi8>, !fir.array<40xi8>>
|
||||
! CHECK-DAG fir.global @_QMmodeq1Ey1 : tuple<!fir.array<16xi8>, !fir.array<24xi8>>
|
||||
! COM: CHECK-DAG: fir.global @_QMmodeq1Ex1 : tuple<!fir.array<36xi8>, !fir.array<40xi8>>
|
||||
! COM: CHECK-DAG: fir.global @_QMmodeq1Ey1 : tuple<!fir.array<16xi8>, !fir.array<24xi8>>
|
||||
|
||||
! CHECK-LABEL: func @_QPmodcommon1use()
|
||||
real function modCommon1Use()
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
! RUN: bbc %s -emit-fir --canonicalize -o - | FileCheck %s
|
||||
|
||||
! CHECK-LABEL pause_test
|
||||
! CHECK-LABEL: pause_test
|
||||
subroutine pause_test()
|
||||
! CHECK: fir.call @_Fortran{{.*}}PauseStatement()
|
||||
! CHECK-NEXT: return
|
||||
|
||||
@@ -151,7 +151,7 @@ module polymorphic_test
|
||||
! CHECK-LABEL: func.func @_QMpolymorphic_testPtest_fct_ret_class() -> !fir.class<!fir.ptr<!fir.type<_QMpolymorphic_testTp1{a:i32,b:i32}>>>
|
||||
! CHECK: return %{{.*}} : !fir.class<!fir.ptr<!fir.type<_QMpolymorphic_testTp1{a:i32,b:i32}>>>
|
||||
|
||||
! CHECK-lABEL: func.func @_QMpolymorphic_testPcall_fct()
|
||||
! CHECK-LABEL: func.func @_QMpolymorphic_testPcall_fct()
|
||||
! CHECK: %[[RESULT:.*]] = fir.alloca !fir.class<!fir.ptr<!fir.type<_QMpolymorphic_testTp1{a:i32,b:i32}>>> {bindc_name = ".result"}
|
||||
! CHECK: %[[CALL_RES:.*]] = fir.call @_QMpolymorphic_testPtest_fct_ret_class() {{.*}}: () -> !fir.class<!fir.ptr<!fir.type<_QMpolymorphic_testTp1{a:i32,b:i32}>>>
|
||||
! CHECK: fir.save_result %[[CALL_RES]] to %[[RESULT]] : !fir.class<!fir.ptr<!fir.type<_QMpolymorphic_testTp1{a:i32,b:i32}>>>, !fir.ref<!fir.class<!fir.ptr<!fir.type<_QMpolymorphic_testTp1{a:i32,b:i32}>>>>
|
||||
|
||||
@@ -75,5 +75,5 @@ end subroutine omp_in_reduction_parallel
|
||||
!PARSE-TREE-NEXT: OmpLoopDirective -> llvm::omp::Directive = taskloop simd
|
||||
!PARSE-TREE-NEXT: OmpClauseList -> OmpClause -> InReduction -> OmpInReductionClause
|
||||
!PARSE-TREE-NEXT: OmpReductionIdentifier -> DefinedOperator -> IntrinsicOperator = Add
|
||||
!PASRE-TREE-NEXT: OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'z'
|
||||
!PARSE-TREE-NEXT: OmpObjectList -> OmpObject -> Designator -> DataRef -> Name = 'z'
|
||||
|
||||
|
||||
@@ -63,14 +63,14 @@ module attributes {dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry<f80, dense<128> :
|
||||
// CHECK: %{{.*}} = fir.load %[[COORD]] : !fir.ref<f64>
|
||||
// CHECK: fir.result %{{.*}}, %{{.*}}
|
||||
// CHECK: }
|
||||
// CHECK fir.result %[[LOOP_RES]]#0, %[[LOOP_RES]]#1
|
||||
// CHECK: fir.result %[[LOOP_RES]]#0, %[[LOOP_RES]]#1
|
||||
// CHECK: } else {
|
||||
// CHECK: %[[LOOP_RES2:.*]]:2 = fir.do_loop {{.*}}
|
||||
// CHECK: %[[COORD2:.*]] = fir.coordinate_of %[[REBOX]], %{{.*}} : (!fir.box<!fir.array<?xf64>>, i64) -> !fir.ref<f64>
|
||||
// CHECK: %{{.*}}= fir.load %[[COORD2]] : !fir.ref<f64>
|
||||
// CHECK: fir.result %{{.*}}, %{{.*}}
|
||||
// CHECK: }
|
||||
// CHECK fir.result %[[LOOP_RES2]]#0, %[[LOOP_RES2]]#1
|
||||
// CHECK: fir.result %[[LOOP_RES2]]#0, %[[LOOP_RES2]]#1
|
||||
// CHECK: }
|
||||
// CHECK: fir.store %[[IF_RES]]#1 to %{{.*}}
|
||||
// CHECK: return
|
||||
@@ -378,14 +378,14 @@ func.func @sum1dfixed(%arg0: !fir.ref<!fir.array<?xf64>> {fir.bindc_name = "a"},
|
||||
// CHECK: %{{.*}} = fir.load %[[COORD]] : !fir.ref<f64>
|
||||
// CHECK: fir.result %{{.*}}, %{{.*}}
|
||||
// CHECK: }
|
||||
// CHECK fir.result %[[LOOP_RES]]#0, %[[LOOP_RES]]#1
|
||||
// CHECK: fir.result %[[LOOP_RES]]#0, %[[LOOP_RES]]#1
|
||||
// CHECK: } else {
|
||||
// CHECK: %[[LOOP_RES2:.*]]:2 = fir.do_loop {{.*}}
|
||||
// CHECK: %[[COORD2:.*]] = fir.coordinate_of %[[ARG0]], %{{.*}} : (!fir.box<!fir.array<?x?xf64>>, i64, i64) -> !fir.ref<f64>
|
||||
// CHECK: %{{.*}}= fir.load %[[COORD2]] : !fir.ref<f64>
|
||||
// CHECK: fir.result %{{.*}}, %{{.*}}
|
||||
// CHECK: }
|
||||
// CHECK fir.result %[[LOOP_RES2]]#0, %[[LOOP_RES2]]#1
|
||||
// CHECK: fir.result %[[LOOP_RES2]]#0, %[[LOOP_RES2]]#1
|
||||
// CHECK: }
|
||||
// CHECK: fir.store %[[IF_RES]]#1 to %{{.*}}
|
||||
// CHECK: return
|
||||
@@ -510,14 +510,14 @@ func.func @sum1dfixed(%arg0: !fir.ref<!fir.array<?xf64>> {fir.bindc_name = "a"},
|
||||
// CHECK: %{{.*}} = fir.load %[[COORD]] : !fir.ref<f64>
|
||||
// CHECK: fir.result %{{.*}}, %{{.*}}
|
||||
// CHECK: }
|
||||
// CHECK fir.result %[[LOOP_RES]]#0, %[[LOOP_RES]]#1
|
||||
// CHECK: fir.result %[[LOOP_RES]]#0, %[[LOOP_RES]]#1
|
||||
// CHECK: } else {
|
||||
// CHECK: %[[LOOP_RES2:.*]]:2 = fir.do_loop {{.*}}
|
||||
// CHECK: %[[COORD2:.*]] = fir.coordinate_of %[[ARG0]], %{{.*}} : (!fir.box<!fir.array<?x?x?xf64>>, i64, i64, i64) -> !fir.ref<f64>
|
||||
// CHECK: %{{.*}}= fir.load %[[COORD2]] : !fir.ref<f64>
|
||||
// CHECK: fir.result %{{.*}}, %{{.*}}
|
||||
// CHECK: }
|
||||
// CHECK fir.result %[[LOOP_RES2]]#0, %[[LOOP_RES2]]#1
|
||||
// CHECK: fir.result %[[LOOP_RES2]]#0, %[[LOOP_RES2]]#1
|
||||
// CHECK: }
|
||||
// CHECK: fir.store %[[IF_RES]]#1 to %{{.*}}
|
||||
// CHECK: return
|
||||
|
||||
@@ -428,7 +428,7 @@ module attributes {fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", llvm.targ
|
||||
}
|
||||
|
||||
// Just check that SOMETHING is being output.
|
||||
// CHECK-LABEL @sum_dim() {
|
||||
// CHECK-LABEL: @sum_dim() {
|
||||
// CHECK: return
|
||||
|
||||
|
||||
@@ -459,7 +459,7 @@ module attributes {fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", llvm.targ
|
||||
}
|
||||
|
||||
// Just check that SOMETHING is being output.
|
||||
// CHECK-LABEL @sum_1d_unknown() {
|
||||
// CHECK-LABEL: @sum_1d_unknown(
|
||||
// CHECK: return
|
||||
|
||||
// -----
|
||||
@@ -1260,9 +1260,9 @@ func.func private @_FortranACountDim(!fir.ref<!fir.box<none>>, !fir.box<none>, i
|
||||
|
||||
// CHECK-LABEL: func.func @_QMtestPcount_generate_mask(
|
||||
// CHECK-SAME: %[[A:.*]]: !fir.ref<!fir.array<10x10x!fir.logical<4>>> {fir.bindc_name = "mask"}) -> !fir.array<10xi32> {
|
||||
// CHECK-NOT fir.call @_FortranACountDimLogical4_simplified({{.*}})
|
||||
// CHECK-NOT: fir.call @_FortranACountDimLogical4_simplified({{.*}})
|
||||
// CHECK: fir.call @_FortranACountDim({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.box<none>, i32, i32, !fir.ref<i8>, i32) -> ()
|
||||
// CHECK-NOT fir.call @_FortranACountDimLogical4_simplified({{.*}})
|
||||
// CHECK-NOT: fir.call @_FortranACountDimLogical4_simplified({{.*}})
|
||||
|
||||
// -----
|
||||
// Ensure count isn't simplified for unknown dimension arrays
|
||||
@@ -1285,9 +1285,9 @@ func.func private @_FortranACount(!fir.box<none>, !fir.ref<i8>, i32, i32) -> i64
|
||||
|
||||
// CHECK-LABEL: func.func @_QPmc(
|
||||
// CHECK-SAME: %[[VAL_0:.*]]: !fir.box<!fir.array<?x?x?x!fir.logical<4>>> {fir.bindc_name = "m"}) -> i32 {
|
||||
// CHECK-NOT fir.call @_FortranACountLogical4_simplified({{.*}})
|
||||
// CHECK-NOT: fir.call @_FortranACountLogical4_simplified({{.*}})
|
||||
// CHECK: %[[RES:.*]] = fir.call @_FortranACount({{.*}}) fastmath<contract> : (!fir.box<none>, !fir.ref<i8>, i32, i32) -> i64
|
||||
// CHECK-NOT fir.call @_FortranACountLogical4_simplified({{.*}})
|
||||
// CHECK-NOT: fir.call @_FortranACountLogical4_simplified({{.*}})
|
||||
|
||||
// -----
|
||||
// Ensure Any is simplified in correct usage
|
||||
@@ -1443,9 +1443,9 @@ func.func private @_FortranAAnyDim(!fir.ref<!fir.box<none>>, !fir.box<none>, i32
|
||||
|
||||
// CHECK-LABEL: func.func @_QPtestAny_DimArg(
|
||||
// CHECK-SAME: %[[ARR:.*]]: !fir.ref<!fir.array<10x10x!fir.logical<4>>> {fir.bindc_name = "a"}) -> !fir.array<10x!fir.logical<4>> {
|
||||
// CHECK-NOT fir.call @_FortranAAnyDimLogical4x1_simplified({{.*}})
|
||||
// CHECK-NOT: fir.call @_FortranAAnyDimLogical4x1_simplified({{.*}})
|
||||
// CHECK: fir.call @_FortranAAnyDim({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.box<none>, i32, !fir.ref<i8>, i32) -> ()
|
||||
// CHECK-NOT fir.call @_FortranAAnyDimLogical4x1_simplified({{.*}})
|
||||
// CHECK-NOT: fir.call @_FortranAAnyDimLogical4x1_simplified({{.*}})
|
||||
|
||||
// -----
|
||||
// Ensure Any is not simplified for unknown dimension arrays
|
||||
@@ -1468,9 +1468,9 @@ func.func private @_FortranAAny(!fir.box<none>, !fir.ref<i8>, i32, i32) -> i1 at
|
||||
|
||||
// CHECK-LABEL: func.func @_QPtestAny_UnknownDim(
|
||||
// CHECK-SAME: %[[VAL_0:.*]]: !fir.box<!fir.array<?x!fir.logical<4>>> {fir.bindc_name = "a"}) -> !fir.logical<4> {
|
||||
// CHECK-NOT fir.call @_FortranAAnyLogical4x1_simplified({{.*}})
|
||||
// CHECK-NOT: fir.call @_FortranAAnyLogical4x1_simplified({{.*}})
|
||||
// CHECK: fir.call @_FortranAAny({{.*}}) fastmath<contract> : (!fir.box<none>, !fir.ref<i8>, i32, i32) -> i1
|
||||
// CHECK-NOT fir.call @_FortranAAnyLogical4x1_simplified({{.*}})
|
||||
// CHECK-NOT: fir.call @_FortranAAnyLogical4x1_simplified({{.*}})
|
||||
|
||||
// -----
|
||||
// Check that multi-rank Any cases are properly simplified
|
||||
@@ -1682,9 +1682,9 @@ func.func private @_FortranAAllDim(!fir.ref<!fir.box<none>>, !fir.box<none>, i32
|
||||
|
||||
// CHECK-LABEL: func.func @_QPtestAll_DimArg(
|
||||
// CHECK-SAME: %[[ARR:.*]]: !fir.ref<!fir.array<10x10x!fir.logical<4>>> {fir.bindc_name = "a"}) -> !fir.array<10x!fir.logical<4>> {
|
||||
// CHECK-NOT fir.call @_FortranAAllDimLogical4x1_simplified({{.*}})
|
||||
// CHECK-NOT: fir.call @_FortranAAllDimLogical4x1_simplified({{.*}})
|
||||
// CHECK: fir.call @_FortranAAllDim({{.*}}) fastmath<contract> : (!fir.ref<!fir.box<none>>, !fir.box<none>, i32, !fir.ref<i8>, i32) -> ()
|
||||
// CHECK-NOT fir.call @_FortranAAllDimLogical4x1_simplified({{.*}})
|
||||
// CHECK-NOT: fir.call @_FortranAAllDimLogical4x1_simplified({{.*}})
|
||||
|
||||
// -----
|
||||
// Check Minloc simplifies correctly for 1D case with 1D mask, I32 input
|
||||
|
||||
Reference in New Issue
Block a user