)]}'
{
  "commit": "8513af56fdc8a64893f4462fcae1f30d0dd5112a",
  "tree": "e38ae80032e7d22549502427003bb411160eaa2b",
  "parents": [
    "b3a88206ea0f5e2deda80fb10a2bf8000726d104",
    "8e61983aae46758352fe70e3b5cdb21d753c2320"
  ],
  "author": {
    "name": "Jonathan Brouwer",
    "email": "jonathantbrouwer@gmail.com",
    "time": "Sun Jun 21 23:04:21 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sun Jun 21 23:04:21 2026 +0200"
  },
  "message": "Rollup merge of #158214 - hanna-kruppe:issue-158206, r\u003dcjgillot\n\nDon\u0027t try to remove assignments in SimplifyComparisonIntegral\n\nThe pass tried to opportunistically clean up an unnecessary assign statement if there\u0027s no other use of the comparison folded into a `switchInt`. The reasoning was that `switchInt(move _N)` prevents uses of `_N` in other blocks. The immediate problem is that the pass didn\u0027t check for other uses of the comparison result *in the same block*. This PR drops the cleanup logic entirely to fix rust-lang/rust#158206.\n\nOne could try to salvage the cleanup by doing another scan through the basic block and looking for other uses of the temporary. However, the other half of the reasoning (`move` prevents later uses) is also dubious. As the documentation of `Operand::Move` says:\n\n\u003e This may additionally overwrite the place with uninit bytes, depending on how we decide in [UCG#188](https://github.com/rust-lang/unsafe-code-guidelines/issues/188). You should not emit MIR that may attempt a subsequent second load of this place without first re-initializing it.\n\nThis does not justify assuming \"moves makes place uninitialized\" semantics for the purpose of optimizations. At least for now, it doesn\u0027t seem possible to do this cleanup soundly without a whole-function analysis that looks at all uses, i.e., a general dead code elimination pass.\n",
  "tree_diff": []
}
