)]}'
{
  "commit": "7efa7b77d2e341d0036727474cd45e66cb6c3445",
  "tree": "16ddbf12f2a35977b2cf37fef5f80884e48d9335",
  "parents": [
    "d4faa4389c53e909539b9faa47b0e6df2b015269"
  ],
  "author": {
    "name": "Jerry DeLisle",
    "email": "jvdelisle@gcc.gnu.org",
    "time": "Fri Aug 14 12:20:35 2026 -0700"
  },
  "committer": {
    "name": "Jerry DeLisle",
    "email": "jvdelisle@gcc.gnu.org",
    "time": "Mon Aug 17 17:50:32 2026 -0700"
  },
  "message": "fortran: [PR126872] BIND(C) entities must keep default ELF visibility\n\nAssisted-by: Claude Opus 5\n\nA binding label gives an entity external linkage, so PRIVATE hides only\nthe Fortran name and must not lower the symbol\u0027s ELF visibility.  Three\nsites gave hidden visibility to PRIVATE module entities without exempting\nbinding labels, so a BIND(C) procedure or variable in a module with a\nPRIVATE default was not exported from a shared library.\n\nThe procedure case is a regression from r17-913 (PR fortran/125430),\nbackported to the 16 branch as r16-9113 and so present in 16.2.0 but not\n16.1.0; the variable case dates from r6-2637, the introduction of\nsubmodules (PR fortran/52846).  Module entities\nwithout a binding label keep the hidden visibility that lets submodules\nreach them via host association.\n\ngcc/fortran/ChangeLog:\n\n\tPR fortran/126872\n\t* trans-decl.cc (gfc_finish_var_decl): Drop the unreachable\n\thidden-visibility case in the BIND(C) block.  Do not give hidden\n\tvisibility to a PRIVATE module variable with a binding label.\n\t(build_function_decl): Do not give hidden visibility to a PRIVATE\n\tmodule procedure with a binding label.\n\ngcc/testsuite/ChangeLog:\n\n\tPR fortran/126872\n\t* gfortran.dg/bind_c_private_1.f90: New test.\n\n(cherry picked from commit 75136eabafd2028a04d47720ea87548df47e2578)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "ee33616556cd6df64d7d95fb1b0497a4f67729dd",
      "old_mode": 33188,
      "old_path": "gcc/fortran/trans-decl.cc",
      "new_id": "8b5b3106b5395511770ca77cb2aab28c4b08c0f5",
      "new_mode": 33188,
      "new_path": "gcc/fortran/trans-decl.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9caacbb21c7d31086c37e707d59d56c175ab4d82",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gfortran.dg/bind_c_private_1.f90"
    }
  ]
}
