brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · cca9378 Raw
96 lines · plain
1! RUN: bbc -emit-fir -hlfir=false -o - %s | FileCheck %s2 3! CHECK-LABEL: func @_QQmain4program p5  ! CHECK-DAG: [[I:%[0-9]+]] = fir.alloca i32 {{{.*}}uniq_name = "_QFEi"}6  ! CHECK-DAG: [[N:%[0-9]+]] = fir.alloca i32 {{{.*}}uniq_name = "_QFEn"}7  ! CHECK: [[T:%[0-9]+]] = fir.alloca !fir.array<3xi32> {bindc_name = "t", uniq_name = "_QFEt"}8  integer :: n, foo, t(3)9  ! CHECK: [[N]]10  ! CHECK-COUNT-3: fir.coordinate_of [[T]]11  n = 100; t(1) = 111; t(2) = 222; t(3) = 33312  ! CHECK: fir.load [[N]]13  ! CHECK: addi {{.*}} %c514  ! CHECK: fir.store %{{[0-9]*}} to [[B:%[0-9]+]]15  ! CHECK: [[C:%[0-9]+]] = fir.coordinate_of [[T]]16  ! CHECK: fir.call @_QPfoo17  ! CHECK: fir.store %{{[0-9]*}} to [[D:%[0-9]+]]18  associate (a => n, b => n+5, c => t(2), d => foo(7))19    ! CHECK: fir.load [[N]]20    ! CHECK: addi %{{[0-9]*}}, %c121    ! CHECK: fir.store %{{[0-9]*}} to [[N]]22    a = a + 123    ! CHECK: fir.load [[C]]24    ! CHECK: addi %{{[0-9]*}}, %c125    ! CHECK: fir.store %{{[0-9]*}} to [[C]]26    c = c + 127    ! CHECK: fir.load [[N]]28    ! CHECK: addi %{{[0-9]*}}, %c129    ! CHECK: fir.store %{{[0-9]*}} to [[N]]30    n = n + 131    ! CHECK: fir.load [[N]]32    ! CHECK: fir.embox [[T]]33    ! CHECK: fir.load [[N]]34    ! CHECK: fir.load [[B]]35    ! CHECK: fir.load [[C]]36    ! CHECK: fir.load [[D]]37    print*, n, t, a, b, c, d ! expect: 102 111 223 333 102 105 223 738  end associate39 40  call nest41 42  do i=1,443    associate (x=>i)44      ! CHECK: [[IVAL:%[0-9]+]] = fir.load [[I]] : !fir.ref<i32>45      ! CHECK: [[TWO:%.*]] = arith.constant 2 : i3246      ! CHECK: arith.cmpi eq, [[IVAL]], [[TWO]] : i3247      ! CHECK: ^bb48      if (x==2) goto 949      ! CHECK: [[IVAL:%[0-9]+]] = fir.load [[I]] : !fir.ref<i32>50      ! CHECK: [[THREE:%.*]] = arith.constant 3 : i3251      ! CHECK: arith.cmpi eq, [[IVAL]], [[THREE]] : i3252      ! CHECK: ^bb53      ! CHECK: fir.call @_FortranAStopStatementText54      ! CHECK: fir.unreachable55      ! CHECK: ^bb56      if (x==3) stop 'Halt'57      ! CHECK: fir.call @_FortranAioOutputAscii58      print*, "ok"59  9 end associate60  enddo61end62 63! CHECK-LABEL: func @_QPfoo64integer function foo(x)65  integer x66  integer, save :: i = 067  i = i + x68  foo = i69end function foo70 71! CHECK-LABEL: func @_QPnest(72subroutine nest73  integer, parameter :: n = 1074  integer :: a(5), b(n)75  associate (s => sequence(size(a)))76    a = s77    associate(t => sequence(n))78      b = t79      ! CHECK:   cond_br %{{.*}}, [[BB1:\^bb[0-9]]], [[BB2:\^bb[0-9]]]80      ! CHECK: [[BB1]]:81      ! CHECK:   br [[BB3:\^bb[0-9]]]82      ! CHECK: [[BB2]]:83      if (a(1) > b(1)) goto 984    end associate85    a = a * a86  end associate87  ! CHECK:   br [[BB3]]88  ! CHECK: [[BB3]]:899 print *, sum(a), sum(b) ! expect: 55 5590contains91  function sequence(n)92    integer sequence(n)93    sequence = [(i,i=1,n)]94  end function95end subroutine nest96