)]}'
{
  "commit": "f8f852430c6b00a256686e249c03b596386bc8ee",
  "tree": "c94296acbf043cd6fd8d2ceda52e1384df0f5b59",
  "parents": [
    "ba42f5db945033f31502f32c6190b3ea12dda2ba"
  ],
  "author": {
    "name": "Ben Clayton",
    "email": "bclayton@google.com",
    "time": "Wed Jun 21 08:27:42 2023 +0000"
  },
  "committer": {
    "name": "Dawn LUCI CQ",
    "email": "dawn-scoped@luci-project-accounts.iam.gserviceaccount.com",
    "time": "Wed Jun 21 08:27:42 2023 +0000"
  },
  "message": "[tint][ir] Refactor ToProgram\n\nRework the implementation so that all instructions are visited once.\nThose that produce expression values are stored as either an AST\nexpression node (if inlined in the single place of usage), or as the\nname of a let.\n\nThis approach has the benefit that we do not use recursion for\nexpression evaluation, substantially reducing the risk of stack\noverflow.\n\nChange-Id: I1fc0787a2e69f2a999227fe9198d5bfc442aff14\nReviewed-on: https://dawn-review.googlesource.com/c/dawn/+/137165\nReviewed-by: Dan Sinclair \u003cdsinclair@chromium.org\u003e\nCommit-Queue: Ben Clayton \u003cbclayton@google.com\u003e\nKokoro: Kokoro \u003cnoreply+kokoro@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a28670255f8d18abb883e032befe6b13b9f08477",
      "old_mode": 33188,
      "old_path": "src/tint/ir/to_program.cc",
      "new_id": "8d413525a069b035e92c91fce135007cf89808d3",
      "new_mode": 33188,
      "new_path": "src/tint/ir/to_program.cc"
    },
    {
      "type": "modify",
      "old_id": "587d9991bc552711b14f5a137df7c6d6385f2046",
      "old_mode": 33188,
      "old_path": "src/tint/ir/to_program_roundtrip_test.cc",
      "new_id": "318558c6585ea508602517b21b8461a6c5124cfa",
      "new_mode": 33188,
      "new_path": "src/tint/ir/to_program_roundtrip_test.cc"
    }
  ]
}
