1. 27 Jan, 2016 4 commits
  2. 26 Jan, 2016 5 commits
  3. 25 Jan, 2016 3 commits
  4. 22 Jan, 2016 13 commits
  5. 21 Jan, 2016 4 commits
  6. 20 Jan, 2016 5 commits
  7. 19 Jan, 2016 3 commits
  8. 15 Jan, 2016 3 commits
    • Subzero. RAII NaCl Bundling. · 3bf335f6
      John Porto authored
      This CL introduces the TargetLowering::AutoBundle type, which allows
      RAII-style bundle emission. As part of the CL, all of the uses of
      TargetLowering::_bundle_lock(), and TargetLowering::_bundle_unlock(),
      were replaced with uses of the newly introduced type.
      
      BUG=
      R=sehr@chromium.org, stichnot@chromium.org
      
      Review URL: https://codereview.chromium.org/1585843007 .
    • Implements include/exclude register lists for translation. · 5403f5dc
      Karl Schimpf authored
      This allows better debugging of register encodings into
      instructions, in the integrated assembler.
      
      BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4334
      R=stichnot@chromium.org
      
      Review URL: https://codereview.chromium.org/1571433004 .
    • Subzero: Make optimizations more resilient for early Target development. · 6f7ad6c2
      Jim Stichnoth authored
      A good trick for implementing lowering for a new target is, for not-yet-implemented instructions, to insert a FakeUse of each instruction variable followed by a FakeDef of the dest variable.  Otherwise one risks running afoul of liveness analysis integrity checks.
      
      However, if all the high-level instructions in a basic block lack variables (e.g. unconditional branches, or void calls with only constant arguments), the resulting block may be completely empty.  In O2 mode, this triggers a couple of assertions/errors that wouldn't normally occur:
      
      1. CfgNode::contractIfEmpty() finds a block with a single out-edge that does *not* end with an unconditional branch.
      
      2. CfgNode::livenessAddIntervals() tries to add a bogus liveness interval to a variable because the empty block contains no actual instruction numbers to form a valid interval from.
      
      This adds some fixes/workarounds for those problems.
      
      Another workaround for the empty basic block problem may be to just to add a FakeUse of the stack pointer when lowering an unconditional branch, which combined with the trick above, should prevent empty blocks.  However, these fixes seem reasonable apart from that.
      
      BUG= none
      R=sehr@chromium.org
      
      Review URL: https://codereview.chromium.org/1590303002 .