)]}'
{
  "commit": "0321cabdfacc5472d2bc650de3e36ca10131b60a",
  "tree": "86be5c101480ebf4a72c278f262b498db3b6ea58",
  "parents": [
    "4720f49e189fcfd52d8bc61cbf0fc913f3336542"
  ],
  "author": {
    "name": "David Chase",
    "email": "drchase@google.com",
    "time": "Tue Mar 08 15:08:25 2016 -0500"
  },
  "committer": {
    "name": "David Chase",
    "email": "drchase@google.com",
    "time": "Tue Mar 08 23:06:11 2016 +0000"
  },
  "message": "cmd/compile: guard the \u0026-to-\u003c\u003c\u003e\u003e opt against small constants\n\nConverting an and-K into a pair of shifts for K that will\nfit in a one-byte argument is probably not an optimization,\nand it also interferes with other patterns that we want to\nsee fire, like (\u003c\u003c (AND K)) [for small K] and bounds check\nelimination for masked indices.\n\nTurns out that on Intel, even 32-bit signed immediates beat\nthe shift pair; the size reduction of tool binaries is 0.09%\nvs 0.07% for only the 8-bit immediates.\n\nRLH found this one working on the new/next GC.\n\nChange-Id: I2414a8de1dd58d680d18587577fbadb7ff4f67d9\nReviewed-on: https://go-review.googlesource.com/20410\nReviewed-by: Keith Randall \u003ckhr@golang.org\u003e\nRun-TryBot: David Chase \u003cdrchase@google.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "57ab70339a7449dc9dc2ae933df8e78638a7e892",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/ssa/gen/generic.rules",
      "new_id": "8cb79a0da846088a62c0d7217424458a84e27b69",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/ssa/gen/generic.rules"
    },
    {
      "type": "modify",
      "old_id": "cde60c1bcd288d329d901f74c7d04258aff9165c",
      "old_mode": 33188,
      "old_path": "src/cmd/compile/internal/ssa/rewritegeneric.go",
      "new_id": "122c661114312699d82676d05508f15a347d197d",
      "new_mode": 33188,
      "new_path": "src/cmd/compile/internal/ssa/rewritegeneric.go"
    }
  ]
}
