)]}'
{
  "commit": "32a5d479d2325545ad5829b7716ad962db3b323c",
  "tree": "f0bd3f2ac909396be8d4c007ffd63d8784b90cfc",
  "parents": [
    "78f2fd84e832c49a496ab712512be058c0c2912b"
  ],
  "author": {
    "name": "Simon Marchi",
    "email": "simon.marchi@efficios.com",
    "time": "Thu Dec 21 16:51:38 2023 +0000"
  },
  "committer": {
    "name": "Simon Marchi",
    "email": "simon.marchi@polymtl.ca",
    "time": "Sun Dec 24 11:16:58 2023 -0500"
  },
  "message": "gdb: make value::allocate_register_lazy store id of next non-inline frame\n\nSome spots loop on the frame chain to find the first next non-inline\nframe, and pass that as the \"next frame\" to\nvalue::allocate_register_lazy / value::allocate_register.  This is\nnecessary if the value is used in the process of computing the id of\n\"this frame\".  If the frame next to \"this frame\" is inlined into \"this\nframe\", then you that next frame won\u0027t have a computed id yet.  You have\nto go past that to find the next non-inline frame, which will have a\ncomputed id.\n\nIn other cases, it\u0027s fine to store the id of an inline frame as the\n\"next frame id\" in a register struct value.  When trying to unwind a\nregister from it, it will just call inline_frame_prev_register, which\nwill forward the request to the next next frame, until we hit the next\nphysical frame.\n\nI think it would make things simpler to just never store the id of an\ninline frame as the next frame id of register struct values, and go with\nthe first next non-inline frame directly.  This way, we don\u0027t have to\nwonder which code paths have to skip inline frames when creating\nregister values and which don\u0027t.\n\nSo, change value::allocate_register_lazy to do that work, and remove the\nloops for the callers that did it.\n\nChange-Id: Ic88115dac49dc14e3053c95f92050062b24b7310\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "dc8a2f9f8b4f7253054c31538c9605482e463178",
      "old_mode": 33188,
      "old_path": "gdb/findvar.c",
      "new_id": "12f280059f134bf33a1d073f3254e502a790cbf9",
      "new_mode": 33188,
      "new_path": "gdb/findvar.c"
    },
    {
      "type": "modify",
      "old_id": "53c4fd726346fb18e5b2d477c065a89479ca37f0",
      "old_mode": 33188,
      "old_path": "gdb/rs6000-tdep.c",
      "new_id": "1a58e00cd5173806d3c2a2aa5b06275e5a0de16d",
      "new_mode": 33188,
      "new_path": "gdb/rs6000-tdep.c"
    },
    {
      "type": "modify",
      "old_id": "086f8c99517b8b4e2f6098405e84286b0dab194d",
      "old_mode": 33188,
      "old_path": "gdb/value.c",
      "new_id": "3e31b762f364332b34942572d36b574e16c4bb67",
      "new_mode": 33188,
      "new_path": "gdb/value.c"
    },
    {
      "type": "modify",
      "old_id": "9fd873288674672157ff89ce598587d9ded6a734",
      "old_mode": 33188,
      "old_path": "gdb/value.h",
      "new_id": "3921d5df8fb3f73c6d5b3e29002b8d252aa4e25b",
      "new_mode": 33188,
      "new_path": "gdb/value.h"
    }
  ]
}
