brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · f757020 Raw
262 lines · plain
1! RUN: %flang_fc1 -fdebug-dump-symbols %s 2>&1 | FileCheck %s2module ma3  type a4   contains5    procedure, private, nopass :: tbp => sub_a6    generic :: gen => tbp7  end type8  type, extends(a) :: aa9   contains10    procedure, private, nopass :: tbp => sub_aa11  end type12  type, extends(aa) :: aaa13   contains14    procedure, public, nopass :: tbp => sub_aaa15  end type16 contains17  subroutine sub_a(w)18    character*(*), intent(in) :: w19    print *, w, ' -> a'20  end21  subroutine sub_aa(w)22    character*(*), intent(in) :: w23    print *, w, ' -> aa'24  end25  subroutine sub_aaa(w)26    character*(*), intent(in) :: w27    print *, w, ' -> aaa'28  end29  subroutine mono130    type(a) :: xa31    type(aa) :: xaa32    call xa%tbp('type(a) tbp')33    call xaa%tbp('type(aa) tbp')34  end35  subroutine pa(x, w)36    class(a), intent(in) :: x37    character*(*), intent(in) :: w38    call x%tbp('class(a) ' // w // ' tbp')39    call x%gen('class(a) ' // w // ' gen')40  end41  subroutine pta142    call pa(a(), 'a')43    call pa(aa(), 'aa')44  end45  subroutine paa(x, w)46    class(aa), intent(in) :: x47    character*(*), intent(in) :: w48    call x%tbp('class(aa) ' // w // ' tbp')49    call x%gen('class(aa) ' // w // ' gen')50  end51  subroutine ptaa152    call paa(aa(), 'aa')53  end54  subroutine paaa(x, w)55    class(aaa), intent(in) :: x56    character*(*), intent(in) :: w57    call x%tbp('class(aaa) ' // w // ' tbp')58    call x%gen('class(aaa) ' // w // ' gen')59  end60  subroutine ptaaa161    call paaa(aaa(), 'aaa')62  end63end64 65module mb66  use ma67  type, extends(a) :: ab68   contains69    procedure, public, nopass :: tbp => sub_ab70  end type71  type, extends(aa) :: aab72   contains73    procedure, public, nopass :: tbp => sub_aab74  end type75  type, extends(aaa) :: aaab76   contains77    procedure, public, nopass :: tbp => sub_aaab78  end type79  type, extends(ab) :: aba80   contains81    procedure, public, nopass :: tbp => sub_aba82  end type83  type, extends(aab) :: aaba84   contains85    procedure, public, nopass :: tbp => sub_aaba86  end type87  type, extends(aaab) :: aaaba88   contains89    procedure, public, nopass :: tbp => sub_aaaba90  end type91 contains92  subroutine sub_ab(w)93    character*(*), intent(in) :: w94    print *, w, ' -> ab'95  end96  subroutine sub_aab(w)97    character*(*), intent(in) :: w98    print *, w, ' -> aab'99  end100  subroutine sub_aaab(w)101    character*(*), intent(in) :: w102    print *, w, ' -> aaab'103  end104  subroutine sub_aba(w)105    character*(*), intent(in) :: w106    print *, w, ' -> aba'107  end108  subroutine sub_aaba(w)109    character*(*), intent(in) :: w110    print *, w, ' -> aaba'111  end112  subroutine sub_aaaba(w)113    character*(*), intent(in) :: w114    print *, w, ' -> aaaba'115  end116end117 118module t119  use mb120 contains121  subroutine mono2122    type(a) :: xa123    type(aa) :: xaa124    type(aaa) :: xaaa125    type(ab) :: xab126    type(aab) :: xaab127    type(aaab) :: xaaab128    type(aba) :: xaba129    type(aaba) :: xaaba130    type(aaaba) :: xaaaba131    call xa%gen('type(a) gen')132    call xaa%gen('type(aa) gen')133    call xaaa%tbp('type(aaa) tbp')134    call xaaa%gen('type(aaa) gen')135    call xab%tbp('type(ab) tbp')136    call xab%gen('type(ab) gen')137    call xaab%tbp('type(aab) tbp')138    call xaab%gen('type(aab) gen')139    call xaaab%tbp('type(aaab) tbp')140    call xaaab%gen('type(aaab) gen')141    call xaba%tbp('type(aba) tbp')142    call xaba%gen('type(aba) gen')143    call xaaba%tbp('type(aaba) tbp')144    call xaaba%gen('type(aaba) gen')145    call xaaaba%tbp('type(aaaba) tbp')146    call xaaaba%gen('type(aaaba) gen')147  end148  subroutine pta2149    call pa(a(), 'a')150    call pa(aa(), 'aa')151    call pa(aaa(), 'aaa')152    call pa(ab(), 'ab')153    call pa(aab(), 'aab')154    call pa(aaab(), 'aaab')155    call pa(aba(), 'aba')156    call pa(aaba(), 'aaba')157    call pa(aaaba(), 'aaaba')158  end159  subroutine ptaa2160    call paa(aa(), 'aa')161    call paa(aaa(), 'aaa')162    call paa(aab(), 'aab')163    call paa(aaab(), 'aaab')164    call paa(aaba(), 'aaba')165    call paa(aaaba(), 'aaaba')166  end167  subroutine ptaaa2168    call paaa(aaa(), 'aaa')169    call paaa(aaab(), 'aaab')170    call paaa(aaaba(), 'aaaba')171  end172  subroutine pab(x, w)173    class(ab), intent(in) :: x174    character*(*), intent(in) :: w175    call x%tbp('class(ab) ' // w // ' tbp')176    call x%gen('class(ab) ' // w // ' gen')177  end178  subroutine ptab179    call pab(ab(), 'ab')180    call pab(aba(), 'aba')181  end182  subroutine paab(x, w)183    class(aab), intent(in) :: x184    character*(*), intent(in) :: w185    call x%tbp('class(aab) ' // w // ' tbp')186    call x%gen('class(aab) ' // w // ' gen')187  end188  subroutine ptaab189    call pa(aab(), 'aab')190    call pa(aaba(), 'aaba')191  end192  subroutine paaab(x, w)193    class(aaab), intent(in) :: x194    character*(*), intent(in) :: w195    call x%tbp('class(aaab) ' // w // ' tbp')196    call x%gen('class(aaab) ' // w // ' gen')197  end198  subroutine ptaaab199    call pa(aaab(), 'aaab')200    call pa(aaaba(), 'aaaba')201  end202  subroutine paba(x, w)203    class(aba), intent(in) :: x204    character*(*), intent(in) :: w205    call x%tbp('class(aba) ' // w // ' tbp')206    call x%gen('class(aba) ' // w // ' gen')207  end208  subroutine ptaba209    call paba(aba(), 'aba')210  end211  subroutine paaba(x, w)212    class(aaba), intent(in) :: x213    character*(*), intent(in) :: w214    call x%tbp('class(aaba) ' // w // ' tbp')215    call x%gen('class(aaba) ' // w // ' gen')216  end217  subroutine ptaaba218    call paaba(aaba(), 'aaba')219  end220  subroutine paaaba(x, w)221    class(aaaba), intent(in) :: x222    character*(*), intent(in) :: w223    call x%tbp('class(aaaba) ' // w // ' tbp')224    call x%gen('class(aaaba) ' // w // ' gen')225  end226  subroutine ptaaaba227    call pa(aaaba(), 'aaaba')228  end229end230 231program main232  use t233  call mono1234  call mono2235  call pta1236  call ptaa1237  call ptaaa1238  call pta2239  call ptaa2240  call ptaaa2241  call ptab242  call ptaab243  call ptaaab244  call ptaba245  call ptaaba246  call ptaaaba247end248 249!CHECK: .v.a, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(binding) shape: 0_8:0_8 init:[binding::binding(proc=sub_a,name=.n.tbp)]250!CHECK: .v.aa, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(binding) shape: 0_8:0_8 init:[binding::binding(proc=sub_aa,name=.n.tbp)]251!CHECK: .v.aaa, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(binding) shape: 0_8:0_8 init:[binding::binding(proc=sub_aaa,name=.n.tbp)]252!CHECK: .v.aaab, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(binding) shape: 0_8:0_8 init:[binding::binding(proc=sub_aaab,name=.n.tbp)]253!CHECK: .v.aaaba, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(binding) shape: 0_8:0_8 init:[binding::binding(proc=sub_aaaba,name=.n.tbp)]254!CHECK: .v.aab, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(binding) shape: 0_8:1_8 init:[binding::binding(proc=sub_aa,name=.n.tbp),binding(proc=sub_aab,name=.n.tbp)]255!CHECK: .v.aaba, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(binding) shape: 0_8:1_8 init:[binding::binding(proc=sub_aa,name=.n.tbp),binding(proc=sub_aaba,name=.n.tbp)]256!CHECK: .v.ab, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(binding) shape: 0_8:1_8 init:[binding::binding(proc=sub_a,name=.n.tbp),binding(proc=sub_ab,name=.n.tbp)]257!CHECK: .v.aba, SAVE, TARGET (CompilerCreated, ReadOnly): ObjectEntity type: TYPE(binding) shape: 0_8:1_8 init:[binding::binding(proc=sub_a,name=.n.tbp),binding(proc=sub_aba,name=.n.tbp)]258!CHECK: tbp, NOPASS, PUBLIC: ProcBinding => sub_ab numPrivatesNotOverridden: 1259!CHECK: tbp, NOPASS, PUBLIC: ProcBinding => sub_aab numPrivatesNotOverridden: 1260!CHECK: tbp, NOPASS, PUBLIC: ProcBinding => sub_aba numPrivatesNotOverridden: 1261!CHECK: tbp, NOPASS, PUBLIC: ProcBinding => sub_aaba numPrivatesNotOverridden: 1262