)]}'
{
  "commit": "c29c1d7edfc57fc4ab15e30b3cea990a5685dd7a",
  "tree": "a229a0c4d3eb4dd386346b550f02aace9d4f3d40",
  "parents": [
    "4c4e1ab26bfc9b3f9b3097ecd0643bc20d0e2f0d"
  ],
  "author": {
    "name": "Aurelien Jarno",
    "email": "aurelien@aurel32.net",
    "time": "Tue Oct 09 21:53:07 2012 +0200"
  },
  "committer": {
    "name": "Aurelien Jarno",
    "email": "aurelien@aurel32.net",
    "time": "Sun Oct 28 14:54:22 2012 +0100"
  },
  "message": "tcg: rewrite tcg_reg_alloc_mov()\n\nNow that the liveness analysis provides more information, rewrite\ntcg_reg_alloc_mov(). This changes the behaviour about propagating\nconstants and memory accesses. We now take the assumption that once\na value is loaded into a register (from memory or from a constant),\nit\u0027s better to keep it there than to reload it later. This assumption\nis now always almost correct given that we are now sure the\ncorresponding temp is going to be used later (otherwise it would have\nbeen synchronized and marked as dead already). The assumption is wrong\nif one of the op after clobbers some registers including the one\nof the holding the temp (this can be avoided by allocating clobbered\nregisters last, which is what most TCG target do), or in case of lack\nof available register.\n\nReviewed-by: Richard Henderson \u003crth@twiddle.net\u003e\nSigned-off-by: Aurelien Jarno \u003caurelien@aurel32.net\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6586385168c69d8251e1c9df0073460635868205",
      "old_mode": 33188,
      "old_path": "tcg/tcg.c",
      "new_id": "b219a6d227bdf2aced02d06888a70365a1d08724",
      "new_mode": 33188,
      "new_path": "tcg/tcg.c"
    }
  ]
}
