)]}'
{
  "commit": "206bedc2aa113eb3f7cb58668944eb7df82b8894",
  "tree": "791e4514e5e7ce2697d720931588d0470bcb8391",
  "parents": [
    "394d8c59ea961e1dcf89ec6c8b6d6606b361590a"
  ],
  "author": {
    "name": "Tom Tromey",
    "email": "tromey@adacore.com",
    "time": "Fri Nov 19 09:23:09 2021 -0700"
  },
  "committer": {
    "name": "Tom Tromey",
    "email": "tromey@adacore.com",
    "time": "Mon Mar 28 13:25:04 2022 -0600"
  },
  "message": "Change call_site_find_chain_1 to work recursively\n\ncall_site_find_chain_1 has a comment claiming that recursive calls\nwould be too expensive.  However, I doubt this is so expensive; and\nfurthermore the explicit state management approach here is difficult\nboth to understand and to modify.  This patch changes this code to use\nexplicit recursion, so that a subsequent patch can generalize this\ncode without undue trauma.\n\nAdditionally, I think this patch detects a latent bug in the recursion\ncode.  (It\u0027s hard for me to be completely certain.)  The bug is that\nwhen a new target_call_site is entered, the code does:\n\n\t  if (target_call_site)\n\t    {\n\t      if (addr_hash.insert (target_call_site-\u003epc ()).second)\n\t\t{\n\t\t  /* Successfully entered TARGET_CALL_SITE.  */\n\n\t\t  chain.push_back (target_call_site);\n\t\t  break;\n\t\t}\n\t    }\n\nHere, if entering the target_call_site fails, then any tail_call_next\nelements in this call site are not visited.  However, if this code\ndoes happen to enter a call site, then the tail_call_next elements\nwill be visited during backtracking.  This applies when doing the\nbacktracking as well -- it will only continue through a given chain as\nlong as each element in the chain can successfully be visited.\n\nI\u0027d appreciate some review of this.  If this behavior is intentional,\nit can be added to the new implementation.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "addf611d8f892d76777b243340659eb1ba140d18",
      "old_mode": 33188,
      "old_path": "gdb/dwarf2/loc.c",
      "new_id": "eb1312a5619ba8bc88bcf2aa8a71a08b5d5aec04",
      "new_mode": 33188,
      "new_path": "gdb/dwarf2/loc.c"
    },
    {
      "type": "modify",
      "old_id": "4f06a303ab25de96a2e77cbf5c7ffe08c7f415f5",
      "old_mode": 33188,
      "old_path": "gdb/testsuite/gdb.arch/amd64-entry-value.exp",
      "new_id": "485d8a5cd1ba9147e966b403ccd3265bd506ee6c",
      "new_mode": 33188,
      "new_path": "gdb/testsuite/gdb.arch/amd64-entry-value.exp"
    }
  ]
}
