)]}'
{
  "commit": "df0e1bac78bd8568d5f5db67fa76f36bbbc580af",
  "tree": "06f5a20d69d99449056f9c0dcfce33a83a2c147f",
  "parents": [
    "38c5fc3274007cab24837e69134f97c8c5c908c5"
  ],
  "author": {
    "name": "Jakub Kuderski",
    "email": "kubak@google.com",
    "time": "Mon Nov 28 13:34:23 2022 -0500"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Nov 28 18:34:23 2022 +0000"
  },
  "message": "[vm] Do not define all arithmetic ops as `Pure` (#11190)\n\nIn MLIR, the `Pure` attribute entails `AlwaysSpeculatable`. This is not\r\na good default for arithmetic VM ops because they are implemented in\r\nterms of C functions that may invoke Undefined Behavior (UB) on some\r\ninputs, e.g., on signed integer overflow in `vm.add.i32`:\r\n```c\r\nstatic inline int32_t vm_add_i32(int32_t lhs, int32_t rhs) { return lhs + rhs; }\r\n```\r\n\r\nUpdate LICM-based speculation LIT test for arithmetic ops.\r\n\r\nNext, we should update the C implementation of some ops affected by this\r\nchange and make them speculatable.\r\n\r\nIssue: https://github.com/iree-org/iree/issues/11179",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0032171702def6ec82eb136053cfd5fe6c7434ee",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/VM/IR/VMOps.td",
      "new_id": "9b6e56006fce652c70a041a5fddbff8d6f9a759b",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/VM/IR/VMOps.td"
    },
    {
      "type": "modify",
      "old_id": "9087acacdaa1fd6cf8e21ec638d15ac313d7803a",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/VM/IR/test/arithmetic_speculation.mlir",
      "new_id": "38f86cc25c4ccba0fded13ee52d3bc73ed0284dd",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/VM/IR/test/arithmetic_speculation.mlir"
    }
  ]
}
