[flang-commits] [PATCH] D120801: [flang] Generate PDT runtime type info in the type definition scope

Jean Perier via Phabricator via flang-commits flang-commits at lists.llvm.org
Wed Mar 2 09:31:43 PST 2022


jeanPerier added a comment.

> Can you really create the derived type description object in the same scope as the definition of the type when the type is USE-associated from a module file and instantiated in another compilation unit? What happens in that case?

Yes, that works, this was already the case with non-PDT types where runtime type info for module was always generated in the compilation unit using the module _inside_ the used module scope, not at the instantiation scope. However, they used to just be ignored in lowering that relied on the related symbols to be translated while processing the module compilation unit. I am moving away from this approach in lowering, and instead taking an approach where runtime type info will always be generated as fully defined weak constant data in compilation unit that needs it. All the duplicate weak symbols are merged at link time.

Here is an example:

module.f90

  subroutine bar()
   use m
   type(t(4)) :: a
   a%i = 1
   print *, a%i
  end subroutine



  module m
   type t(k)
      integer, kind :: k
      integer :: i(k)
   end type
  end module    

test.f90

   use m                                                                                         
   type(t(4)) :: a                                                                               
   a%i = 2                                                                                       
   print *, a%i                                                                                  
   call bar()                                                                                    
  end    

Both `bar.o` and `test.o` will contain a definition of weak definitions of `_QMmE.dt.t.4` that are merged by the linker into a single one in the final executable.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D120801/new/

https://reviews.llvm.org/D120801



More information about the flang-commits mailing list