)]}'
{
  "commit": "acbfd79acf662be04745dc0675558e75e0d30d87",
  "tree": "8fe80817b3b892ab1d7b9eb9973563afcb86bd96",
  "parents": [
    "e96bb7e44fbcc23c1e6009e8d0ee8ab208668fb4"
  ],
  "author": {
    "name": "Hood Chatham",
    "email": "roberthoodchatham@gmail.com",
    "time": "Mon Jan 26 16:58:31 2026 -0800"
  },
  "committer": {
    "name": "Hood Chatham",
    "email": "roberthoodchatham@gmail.com",
    "time": "Tue Feb 24 17:47:27 2026 +0100"
  },
  "message": "Fix: On wasm targets, call `panic_in_cleanup` if panic occurs in cleanup\n\nPreviously this was not correctly implemented. Each funclet may need its own terminate\nblock, so this changes the `terminate_block` into a `terminate_blocks` `IndexVec` which\ncan have a terminate_block for each funclet. We key on the first basic block of the\nfunclet -- in particular, this is the start block for the old case of the top level\nterminate function.\n\nRather than using a catchswitch/catchpad pair, I used a cleanuppad. The reason for the\npair is to avoid catching foreign exceptions on MSVC. On wasm, it seems that the\ncatchswitch/catchpad pair is optimized back into a single cleanuppad and a catch_all\ninstruction is emitted which will catch foreign exceptions. Because the new logic is\nonly used on wasm, it seemed better to take the simpler approach seeing as they do the\nsame thing.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3def9a5c015cccc06bfb7991d697d7aeb6515264",
      "old_mode": 33188,
      "old_path": "compiler/rustc_codegen_gcc/src/builder.rs",
      "new_id": "1b0a4e0b67959774e3e6d2ad7f3f7822aab79825",
      "new_mode": 33188,
      "new_path": "compiler/rustc_codegen_gcc/src/builder.rs"
    },
    {
      "type": "modify",
      "old_id": "ca4805a93e0177b2881dce98564ce01a49ee2422",
      "old_mode": 33188,
      "old_path": "compiler/rustc_codegen_llvm/src/builder.rs",
      "new_id": "c3e15eadfced145c750fbb937e7012884a199d92",
      "new_mode": 33188,
      "new_path": "compiler/rustc_codegen_llvm/src/builder.rs"
    },
    {
      "type": "modify",
      "old_id": "35de8b5e1486b49a929dd917ae539f67c3aa0f7d",
      "old_mode": 33188,
      "old_path": "compiler/rustc_codegen_ssa/src/mir/block.rs",
      "new_id": "4859380daa6623a9652a50676276ec38e3999853",
      "new_mode": 33188,
      "new_path": "compiler/rustc_codegen_ssa/src/mir/block.rs"
    },
    {
      "type": "modify",
      "old_id": "819abb9ae644d26a8cf3b198cc61a10fb7afdb47",
      "old_mode": 33188,
      "old_path": "compiler/rustc_codegen_ssa/src/mir/mod.rs",
      "new_id": "1a0f66d31cca4e420bb079e710b18aae004f4adc",
      "new_mode": 33188,
      "new_path": "compiler/rustc_codegen_ssa/src/mir/mod.rs"
    },
    {
      "type": "modify",
      "old_id": "3486bd140ecebce6aef8eff972bd42cc7dc01b9d",
      "old_mode": 33188,
      "old_path": "compiler/rustc_codegen_ssa/src/traits/builder.rs",
      "new_id": "edabd8188a3b6fe9fec677c26add54fda2f9a5af",
      "new_mode": 33188,
      "new_path": "compiler/rustc_codegen_ssa/src/traits/builder.rs"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1eafe60503809be79a5ee21cb08b2766464a673d",
      "new_mode": 33188,
      "new_path": "tests/codegen-llvm/double_panic_wasm.rs"
    },
    {
      "type": "modify",
      "old_id": "a2ec19871d1fcbb2f8260fb7255045c802fcac87",
      "old_mode": 33188,
      "old_path": "tests/codegen-llvm/terminating-catchpad.rs",
      "new_id": "7c98ea94fdc1303fc81cd61b90ff717d951067fb",
      "new_mode": 33188,
      "new_path": "tests/codegen-llvm/terminating-catchpad.rs"
    }
  ]
}
