)]}'
{
  "commit": "c080a6fb6f0cf402affc287fc600c189980cfb2d",
  "tree": "4ecdffcee6aef4297181fdea8a9fd504208c5a31",
  "parents": [
    "3004aba7a0e041cafd2adf927e0b3a610b16e7c0"
  ],
  "author": {
    "name": "Thomas König",
    "email": "tkoenig@gcc.gnu.org",
    "time": "Thu Feb 13 22:22:04 2020 +0100"
  },
  "committer": {
    "name": "Thomas König",
    "email": "tkoenig@gcc.gnu.org",
    "time": "Sat Feb 22 12:31:18 2020 +0100"
  },
  "message": "Use au-\u003elock exclusively for locking in async I/O.\n\n2020-02-18  Thomas Koenig  \u003ctkoenig@gcc.gnu.org\u003e\n\n\tBackport from trunk\n\tPR fortran/93599\n\t* io/async.c (destroy_adv_cond): Do not destroy lock.\n\t(async_io): Make sure au-\u003elock is locked for finishing of thread.\n\tDo not lock/unlock around signalling emptysignal. Unlock au-\u003elock\n\tbefore return.\n\t(init_adv_cond): Do not initialize lock.\n\t(enqueue_transfer): Unlock after signal.\n\t(enqueue_done_id): Likewise.\n\t(enqueue_done): Likewise.\n\t(enqueue_close): Likewise.\n\t(enqueue_data_transfer): Likewise.\n\t(async_wait_id): Do not lock/unlock around signalling au-\u003ework.\n\t(async_wait): Unlock after signal.\n\t* io/async.h (SIGNAL): Add comment about needed au-\u003elock.\n\tRemove locking/unlocking of advcond-\u003elock.\n\t(WAIT_SIGNAL_MUTEX): Add comment. Remove locking/unlocking of\n\tadvcond-\u003elock.  Unlock mutex only at the end.  Loop on\n\t__ghread_cond_wait returning zero.\n\t(REVOKE_SIGNAL): Add comment. Remove locking/unlocking of\n\tadvcond-\u003elock.\n\t(struct adv_cond): Remove mutex from struct.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "340396dea0797349bb613e868fac21f9e4bc7ae8",
      "old_mode": 33188,
      "old_path": "libgfortran/ChangeLog",
      "new_id": "ce75fe80636539b3a7156632e26d54a01346bcba",
      "new_mode": 33188,
      "new_path": "libgfortran/ChangeLog"
    },
    {
      "type": "modify",
      "old_id": "e3d1d01122ec99b31320de894d63e37dd36039cc",
      "old_mode": 33188,
      "old_path": "libgfortran/io/async.c",
      "new_id": "28b84f6613ae62bebdfd9dc4ffe07eeee640b531",
      "new_mode": 33188,
      "new_path": "libgfortran/io/async.c"
    },
    {
      "type": "modify",
      "old_id": "3ac5177250291498767d40b5c1a72a84078014ff",
      "old_mode": 33188,
      "old_path": "libgfortran/io/async.h",
      "new_id": "0fe407945c37ec888279fef123594fee7b1fef17",
      "new_mode": 33188,
      "new_path": "libgfortran/io/async.h"
    }
  ]
}
