Started 11 days ago
Took 1 hr 16 min on green-dragon-19

Success Build rL:362868 - C:362856 - #57346 (Jun 7, 2019 11:22:56 PM)

Revisions
  • http://llvm.org/svn/llvm-project/llvm/trunk : 362868
  • http://llvm.org/svn/llvm-project/cfe/trunk : 362856
  • http://llvm.org/svn/llvm-project/compiler-rt/trunk : 362859
  • http://llvm.org/svn/llvm-project/debuginfo-tests/trunk : 362745
  • http://llvm.org/svn/llvm-project/zorg/trunk : 362851
  • http://llvm.org/svn/llvm-project/libcxx/trunk : 362866
  • http://llvm.org/svn/llvm-project/clang-tools-extra/trunk : 362811
Changes
  1. [SystemZ, RegAlloc]  Favor 3-address instructions during instruction selection.

    This patch aims to reduce spilling and register moves by using the 3-address
    versions of instructions per default instead of the 2-address equivalent
    ones. It seems that both spilling and register moves are improved noticeably
    generally.

    Regalloc hints are passed to increase conversions to 2-address instructions
    which are done in SystemZShortenInst.cpp (after regalloc).

    Since the SystemZ reg/mem instructions are 2-address (dst and lhs regs are
    the same), foldMemoryOperandImpl() can no longer trivially fold a spilled
    source register since the reg/reg instruction is now 3-address. In order to
    remedy this, new 3-address pseudo memory instructions are used to perform the
    folding only when the dst and lhs virtual registers are known to be allocated
    to the same physreg. In order to not let MachineCopyPropagation run and
    change registers on these transformed instructions (making it 3-address), a
    new target pass called SystemZPostRewrite.cpp is run just after
    VirtRegRewriter, that immediately lowers the pseudo to a target instruction.

    If it would have been possibe to insert a COPY instruction and change a
    register operand (convert to 2-address) in foldMemoryOperandImpl() while
    trusting that the caller (e.g. InlineSpiller) would update/repair the
    involved LiveIntervals, the solution involving pseudo instructions would not
    have been needed. This is perhaps a potential improvement (see Phabricator
    post).

    Common code changes:

    * A new hook TargetPassConfig::addPostRewrite() is utilized to be able to run a
    target pass immediately before MachineCopyPropagation.

    * VirtRegMap is passed as an argument to foldMemoryOperand().

    Review: Ulrich Weigand, Quentin Colombet
    https://reviews.llvm.org/D60888 (detail/ViewSVN)
    by jonpa

Started by an SCM change

This run spent:

  • 6.6 sec waiting;
  • 1 hr 16 min build duration;
  • 1 hr 16 min total from scheduled to completion.
LLVM/Clang Warnings: 1 warning.
    Test Result (no failures)