)]}'
{
  "commit": "800dab29d19d6cc9e842fc16bfb9433018322062",
  "tree": "926a049527528cf1be922e08382fac73e58730f9",
  "parents": [
    "4c127ba70c0c9ff20d7c42315c35f1fbf2aff194"
  ],
  "author": {
    "name": "Jim Stichnoth",
    "email": "stichnot@chromium.org",
    "time": "Sat Sep 20 12:25:02 2014 -0700"
  },
  "committer": {
    "name": "Jim Stichnoth",
    "email": "stichnot@chromium.org",
    "time": "Sat Sep 20 12:25:02 2014 -0700"
  },
  "message": "Subzero: Change the way bitcast stack slot lowering is handled.\n\nWhen doing a bitcast between int and FP types, the way lowering works\nis that a spill temporary is created, with regalloc weight of zero to\ninhibit register allocation, and this spill temporary is used for the\ncvt instruction.  If the other variable does not get\nregister-allocated, then addProlog() forces the spill temporary to\nshare the same stack slot as the other variable.\n\nCurrently, the lowering code passes this information to addProlog()\nby using the setPreferredRegister() mechanism.\n\nThis is changed by creating a target-specific subclass of Variable, so\nthat only the spill temporaries need to carry this extra information.\n\nUltimately, many of the existing Variable fields will be refactored\ninto a separate structure, and only generated/used as needed by\nvarious optimization passes.  The spill temporary linkage is the one\nthing that is still needed with Om1 when no optimizations are enabled,\nmotivating this change.\n\nA couple other minor cleanups are also done here.\n\nThe key test is that the cast cross tests continue to work,\nspecifically the bitcast tests.\n\nBUG\u003d none\nR\u003djvoung@chromium.org\n\nReview URL: https://codereview.chromium.org/586943003\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "44393230daf345055f2853f0c465ef58ebb9be81",
      "old_mode": 33188,
      "old_path": "src/IceCfg.cpp",
      "new_id": "a08bebb31dbc86e66eea5777860e57b99e584791",
      "new_mode": 33188,
      "new_path": "src/IceCfg.cpp"
    },
    {
      "type": "modify",
      "old_id": "a2582eb4f2e1038b0df746e6535ff023a13e215f",
      "old_mode": 33188,
      "old_path": "src/IceCfg.h",
      "new_id": "7a265ad442602edaa7dffed15391d9ffe5fff50a",
      "new_mode": 33188,
      "new_path": "src/IceCfg.h"
    },
    {
      "type": "modify",
      "old_id": "57aba6b29ee9e14fb7abe9054ada7c7202c68f0d",
      "old_mode": 33188,
      "old_path": "src/IceCfgNode.cpp",
      "new_id": "2b05e58d6730ff74b1ca9b671ca5058e16f4e9c8",
      "new_mode": 33188,
      "new_path": "src/IceCfgNode.cpp"
    },
    {
      "type": "modify",
      "old_id": "a24f9863583778507d9b4d749d7980ab9671bb69",
      "old_mode": 33188,
      "old_path": "src/IceInstX8632.h",
      "new_id": "ac391701f3dec84bf679e4954aa17f44d2cd527d",
      "new_mode": 33188,
      "new_path": "src/IceInstX8632.h"
    },
    {
      "type": "modify",
      "old_id": "1f232dd61a39b2a1332b6ee5eaced5b11271d317",
      "old_mode": 33188,
      "old_path": "src/IceOperand.cpp",
      "new_id": "e4aaf2475671163390b6b86e03d292df27e44091",
      "new_mode": 33188,
      "new_path": "src/IceOperand.cpp"
    },
    {
      "type": "modify",
      "old_id": "02a1cf7aedb59c8b2b2664b1ee4d7f961711ba36",
      "old_mode": 33188,
      "old_path": "src/IceOperand.h",
      "new_id": "7fedfd24af7b528fd62cb1a2383544cfebcbb31b",
      "new_mode": 33188,
      "new_path": "src/IceOperand.h"
    },
    {
      "type": "modify",
      "old_id": "ce08c6a83c23cf9a9a5e1485a8c60e8591b16040",
      "old_mode": 33188,
      "old_path": "src/IceRegAlloc.cpp",
      "new_id": "f79e8dcc7be4565327188990f51cd72a1a22f09a",
      "new_mode": 33188,
      "new_path": "src/IceRegAlloc.cpp"
    },
    {
      "type": "modify",
      "old_id": "d17173984a8441303957dd6d884b12bd7c03a7f9",
      "old_mode": 33188,
      "old_path": "src/IceTargetLoweringX8632.cpp",
      "new_id": "f66a364dabc6ff68ab8e9439ff1c7fad454aa15a",
      "new_mode": 33188,
      "new_path": "src/IceTargetLoweringX8632.cpp"
    }
  ]
}
