)]}'
{
  "commit": "22d710cc5f40d79aab104ec5fb5fe97386d56d8a",
  "tree": "8845dc73862a3ecbe4d64ca23abd24eaf2425c4d",
  "parents": [
    "6e6249fc9e9932909089bc5b8cb3618650c9e662"
  ],
  "author": {
    "name": "Jerry DeLisle",
    "email": "jvdelisle@gcc.gnu.org",
    "time": "Sun Aug 09 20:22:58 2026 -0700"
  },
  "committer": {
    "name": "Jerry DeLisle",
    "email": "jvdelisle@gcc.gnu.org",
    "time": "Sun Sep 13 09:49:09 2026 -0700"
  },
  "message": "fortran: [PR103474] Fix ICEs for the cobounds of a subobject of a coarray\n\nF2018:5.4.7(5) makes a subobject of a coarray a coarray with the same\ncodimensions, unless it is reached through a cosubscript, an image\nselector, or an allocatable or pointer component selector.  Querying the\ncobounds of such a subobject, as in LCOBOUND (X%A), reached three places\nthat were not prepared for it, and a coarray whose declaration had already\nbeen rejected reached a fourth.\n\n\tPR fortran/103474\n\ngcc/fortran/ChangeLog:\n\n\t* simplify.cc (simplify_cobound): Take the array spec from the\n\tbase symbol, using its class data for a CLASS coarray, so that a\n\tsubobject of a coarray finds the codimensions.  Return NULL for a\n\tsymbol already flagged as erroneous and in place of the two\n\tgcc_unreachable calls reached on invalid code.\n\t* resolve.cc (gfc_expression_rank): Track the reference carrying\n\tthe codimensions and take the corank from it rather than from the\n\tlast array reference.  Clear it at an allocatable or pointer\n\tcomponent selector, which ends the coarray.\n\t* trans-intrinsic.cc (strip_subobject_of_coarray): New function.\n\tReturn a copy of the expression cut back to the reference carrying\n\tthe codimensions.\n\t(conv_intrinsic_cobound, trans_this_image, trans_image_index): Use\n\tit, so that the descriptor queried for the cobounds is that of the\n\tcoarray and not that of a component of it.\n\ngcc/testsuite/ChangeLog:\n\n\t* gfortran.dg/coarray_52.f90: New test.\n\t* gfortran.dg/coarray/cobounds_subobject_1.f90: New test.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "8db036a4ecf15748c422503b712817eccfdd0a7b",
      "old_mode": 33188,
      "old_path": "gcc/fortran/resolve.cc",
      "new_id": "3a747aa5512bebc60befe01c21d0d4ec71fe6717",
      "new_mode": 33188,
      "new_path": "gcc/fortran/resolve.cc"
    },
    {
      "type": "modify",
      "old_id": "ff13b56419529a9e1b6615f162a22d0f8fda5fa0",
      "old_mode": 33188,
      "old_path": "gcc/fortran/simplify.cc",
      "new_id": "f0b36c06687692f90b48ccc63562db5a8c50244d",
      "new_mode": 33188,
      "new_path": "gcc/fortran/simplify.cc"
    },
    {
      "type": "modify",
      "old_id": "6666c46c1feabbe73e80a89b2bb5662aa24e7e3a",
      "old_mode": 33188,
      "old_path": "gcc/fortran/trans-intrinsic.cc",
      "new_id": "fe271609671d2be16a24d9af0eb9ed1bfc153913",
      "new_mode": 33188,
      "new_path": "gcc/fortran/trans-intrinsic.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "418c652bf124ba8f0b35a097d6be6e0867eb5bae",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gfortran.dg/coarray/cobounds_subobject_1.f90"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "120062ab81e1b01febb1d5d47271eb38c61cf5a7",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/gfortran.dg/coarray_52.f90"
    }
  ]
}
