<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/114035>114035</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Flang] Support for "passing VALUE BIND(C) derived type for this target" on the road map?
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Krande
      </td>
    </tr>
</table>

<pre>
    Hey, 

we have been working on adding support for compiling HDF5 with fortran support for windows using flang in https://github.com/conda-forge/hdf5-feedstock/pull/217 (and also discussed in https://github.com/HDFGroup/hdf5/issues/4419).

In connection with that work we encountered a  `not yet implemented: passing VALUE BIND(C) derived type for this target
` message from flang-new (v19.1.2).

Here is the relevant cmd output

```bash
FAILED: fortran/src/CMakeFiles/hdf5_fortran-shared.dir/H5VLff.F90.obj mod/shared/h5vl.mod 
%BUILD_PREFIX%\Library\bin\flang-new.exe -I%SRC_DIR%\fortran\src -I%SRC_DIR%\fortran\src -I%SRC_DIR%\build\mod\shared -I%SRC_DIR%\build\fortran -I%SRC_DIR%\build\fortran\src -I%SRC_DIR%\src -I%SRC_DIR%\src\H5FDsubfiling -I%SRC_DIR%\build\src -I%PREFIX%\Library\include -D_CRT_SECURE_NO_WARNINGS -D_MT -D_DLL --target=x86_64-pc-windows-msvc -fms-runtime-lib=dll -module-dirmod\shared -ffixed-line-length-72 -o fortran\src\CMakeFiles\hdf5_fortran-shared.dir\H5VLff.F90.obj -c fortran\src\CMakeFiles\hdf5_fortran-shared.dir\H5VLff.F90-pp.f90
error: loc("D:\\bld\\hdf5_1730135420238\\work\\fortran\\src\\H5VLff.F90":456:32): C:\bld\flang-split_1725521580766\work\flang\lib\Optimizer\CodeGen\Target.cpp:102: not yet implemented: passing VALUE BIND(C) derived type for this target
LLVM ERROR: aborting
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: D:\\bld\\hdf5_1730135420238\\_build_env\\Library\\bin\\flang-new -fc1 -triple x86_64-pc-windows-msvc19.29.30154 -emit-obj -I D:\\bld\\hdf5_1730135420238\\work\\fortran\\src -I D:\\bld\\hdf5_1730135420238\\work\\fortran\\src -I D:\\bld\\hdf5_1730135420238\\work\\build\\mod\\shared -I D:\\bld\\hdf5_1730135420238\\work\\build\\fortran -I D:\\bld\\hdf5_1730135420238\\work\\build\\fortran\\src -I D:\\bld\\hdf5_1730135420238\\work\\src -I D:\\bld\\hdf5_1730135420238\\work\\src\\H5FDsubfiling -I D:\\bld\\hdf5_1730135420238\\work\\build\\src -I D:\\bld\\hdf5_1730135420238\\_h_env\\Library\\include -D _CRT_SECURE_NO_WARNINGS -D _MT -D _DLL -ffixed-line-length=72 -mrelocation-model pic -pic-level 2 -target-cpu x86-64 --dependent-lib=clang_rt.builtins-x86_64.lib -D_MT -D_DLL --dependent-lib=msvcrt --dependent-lib=FortranRuntime.dynamic.lib --dependent-lib=FortranDecimal.dynamic.lib -D_MSC_VER=1929 -D_MSC_FULL_VER=192930154 -D_WIN32 -D_M_X64=100 -module-dir mod\\shared -resource-dir D:\\bld\\hdf5_1730135420238\\_build_env\\Library\\lib\\clang\\19 -mframe-pointer=none -o fortran\\src\\CMakeFiles\\hdf5_fortran-shared.dir\\H5VLff.F90.obj -x f95-cpp-input fortran\\src\\CMakeFiles\\hdf5_fortran-shared.dir\\H5VLff.F90-pp.f90

[445/3074] Building Fortran object fortran\src\CMakeFiles\hdf5_fortran-shared.dir\H5Zff.F90.obj
[446/3074] Building Fortran object fortran\src\CMakeFiles\hdf5_fortran-shared.dir\H5Pff.F90.obj
ninja: build stopped: subcommand failed.

```
source https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=1065902&view=logs&j=0ad3a718-cdde-5a77-9020-8beac94f6974&t=eda7a7f8-f584-55f5-338d-6077df40dfcc&l=2058

I tracked the message outputted from flang to here: https://github.com/llvm/llvm-project/blob/main/flang/lib/Optimizer/CodeGen/Target.cpp#L100, and the offending code in the HDF5 library here: https://github.com/HDFGroup/hdf5/blob/hdf5_1.14.5/fortran/src/H5VLff.F90#L456-L461

```fortran
 INTEGER(C_INT) FUNCTION H5VLnative_token_to_addr(loc_id, token, addr) BIND(C, NAME='H5VLnative_token_to_addr')
         IMPORT :: HID_T, C_INT, HADDR_T, H5O_TOKEN_T_F
         INTEGER(HID_T)     , VALUE :: loc_id
 TYPE(H5O_TOKEN_T_F), VALUE :: token
         INTEGER(HADDR_T) :: addr
       END FUNCTION H5VLnative_token_to_addr
```

So my question is if adding support for this is on the road map for flang? 

If you need any further information from me in order to advance this topic, let me know and I'll do my best to help!


Best Regards
Kristoffer
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEWN9yo7jSfxrlRiUKBLLNRS48YCaudZyUk5nd77uhBGpsTUDiCOFM9ulPCezEziS7O3-2TiqF7Varu9Xq7l83vOvkVgFcIvYBsfSC93anzeVvhisBF4UWT5dX8IRogpGfIn8-Ph8B7_gecAGg8KM2D1JtsVaYC-G-dX3bamNxpQ0uddPK2lGv0ozhR2l3jm4NV2d8j1IJ_djhvnO8Vc3VFkuFd9a2HQrniGaIZltpd33hlbpBNCu1EpxU2mwB0WwnKkYqANFZXT4gmrV9XSOa0WCKEZ1xJTCvO42F7Mq-60D8jfSrNPtodN8eRCOaya7roUM0i6IgRjT2Tj2yVLjUSkFppVbjKe2O28E5-BEwqFL3yoIBgTnGaOIrbfETWCybtoYGlAWBwjlu3Y2oLf48X31a4A_LdYroLEE0xgKM3IPA9qmFwWV2JztsudmCPZgy8XEDXce3gCujm9GNRMGjc8E-iL3Ao68tvwID2AnaATZQw54ri8tGYN3btrenrGjij_8F73YjKZsvV4vUGX64VESzzpSIZsk1f4BM1oPLnAvzAwfpdtyA8IQ0zs_s86qqvCz2PV18wY0WTsLA4faxfe01Whyjj7IPn5arNL_dLLLlH4gyxJKVLAw3T4glhVSIJc-H9uArYLJElN1tkjxdbkb-o6Es6Uz5A-tFL2uBWOJMZclo6l-wHYP9bzneVfguFbHkimVp1xfVmGLv63iW8bbnpCrrXgAmaZ5s7vO7RfJps8jXN_nv8816uf5451au790zXa0wIYewC9Ovs0k-iUhbkkMGk6bbl5hUTUdMr6xsgNSyQGEq6hqTRou-BiKkOXdfVcmvIEgtFZAa1NbuyJRiovGZcxBLTsKKJe-FlfPLWViR8ucFkbb1qtgfIxGM0caFfa1LRGeIUpcEiCXO54PHj1KDaegHIYuoT8PZSHdFYfz2YtSzXWc6EaUonEdsgsJ56FLXqUxGTaOaMdq7tpY2D6aUMRqwmT-dTF70DCyIJe4aWHLTWtnIP8EdLtECPoJTfz_cp1e2LQrnge-04n-hQq1Wn6_xYrO52ThJvNDGSrUd125Xi_ndAnd90UiLOS76LTYwAITVf1Wq63p__CCt0V-gtKflGrvafwxwV-VKw7sdLnj5YA0v4VAN7ywvH7DoG-eBkeR7yI9vjd4a3mButr1zgjMCf8dl50MK5qD24--XpHuuWKdFC5OqDDCxRrY14LezK4g9GnuhH7AIE2ikJUOML7_HrPdj8H8v6Fi0novsaZ39aZEvBflXifr5E__k3mPZOMeCnz7e91uV794J9BeAwe8jDB4hBo8Y8y0koDB1oNAYqHXJXafl8ARq3MoSk1aWpIY91JjiAz6Rsu1dDpFJhAkR0IISoOwBkEqXc7mxnjuylaojY7p5tSxe493rvS4NjX1jIRtDYjNCnyeeFG9kOYp8jzmFUja8PmdO8-u7JP-82KAwDWIaHynZp9XqhHyoAmn--3Id0oEp_2MSuVXfP8Vb_E0qGeh0b8px9VdVtBFkEEvKA-oglgQxJk1leAOk1dJ1wShMlVZwDvCnsXyGzn8J0G-A_VdcxYyUbUukanv7a1WctQGHJ_sQRW5ECP1phFiKPzgHuSQ8XDDWhUOlH-9B_v_leCcqJ_-mytvXKpVUX7gDv-H6cWd1244dQdcXpW4ah7MVlzUI782pYfw5xtwrPBew9_ifvYE3Z7vnsY4Mqh2ojzGIaGag62sHytlAWYoh8ics9imik72ERxSmtd52iE6-oDD1uQj5NJiRUgggjE-nJPapT2YF8DKOqkk8jRCduNYWBJ_yaTUjFZtFhLGKkTCcCTLxp1NRRb6oyhLRSY3ClPpsdjYOYtdaPLheaAfPM9k4UVkQJ9PZ0NuAAefH7-5xiloXiGYNl27uGvs8mrkUpNlLn0ezY59Hs5M-j4arwPfdaO8uztmpqwrUEESlFuAGZEcd5vZ6zPF_Yuq3k_PBzLGeeEHkOeLrefG06Q1XEZuQVTQJ3gyk49aBipfr-8XHxcY1oflyfe8a0ezTOrlf3qyxE6q4lXvIrX4AlVudcyEMorNal7kU7vjDyuCHYSU-6WkTvJ5fL1CYIjp9X9bUNeajMce_5fXtzeYeOw-Fc3y1TPN7J-1gYYKv5mm6GWlX7Ca_v_ltsc7v8-y1mOezHUTEA9ltG9vvg4LDYcbN9_93u3A7zuTS-JtN47nfVXi0MD7yD4c9ZV-s03_g6reKwKHl1rh5wv_poRvemsgOy-qtd0jDGCE7rMeANJoL3PB2WBuDPszO3k8tK_yke6wABObqCVe9sTswWKpKm2boHMYUbIYo10aAcYnIxZ6rEg5zi25l6ZxWg3WMD0o_DqmyRHRa11gM1hfQjfMJ1C2i5_E6PD84hg1suRHdSPnNyM66XDMX4jIUcRjzC7h0QOtANppc7C5nMx5Mq2pWAPVDiGhFw5nwC-AQAWfT-EJeUp9GgU_jIIhYFHqMBUxEYVz40zCYzmYo8qHhsvZcyfC02V4MA9FlEER-yC5qXkDdDW_9KD0UDopYemEuhxpT9NsORX4tO9u9iLDS1sOrwmwE9xTfnVwTovQHZ0NKX98tCrOL3tSXPz72HQ66v6T_DQAA___v9Fko">