release_33 branch: proposing r185594, r185615, r185616 and r185617

Dimitry Andric dimitry at andric.com
Mon Jul 8 12:55:47 PDT 2013


Hi,

For the 3.3 release branch, I would like to propose merging r185594, r185615, r185616 and r185617:

r185594 from llvm trunk (by Jakob Stoklund Olesen):

  Add MachineBasicBlock::addLiveIn().

  This function adds a live-in physical register to an MBB and ensures
  that it is copied to a virtual register immediately.

r185615 from llvm trunk (by Jakob Stoklund Olesen):

  Live-in copies go *after* EH_LABELs.

  This will soon be tested by exception handling working at all.

r185616 from llvm trunk (by Jakob Stoklund Olesen):

  FastISel can only append to basic blocks.

  Compute the insertion point from the end of the basic block instead of
  skipping labels from the front.

  This caused failures in landing pads when live-in copies where inserted
  before instruction selection.

r185617 from llvm trunk (by Jakob Stoklund Olesen):

  Simplify landing pad lowering.

  Stop using the ISD::EXCEPTIONADDR and ISD::EHSELECTION when lowering
  landing pad arguments. These nodes were previously legalized into
  CopyFromReg nodes, but that never worked properly because the
  CopyFromReg node weren't guaranteed to be  scheduled at the top of the
  basic block.

  This meant the exception pointer and selector registers could be
  clobbered before being copied to a virtual register.

  This patch copies the two physical registers to virtual registers at
  the beginning of the basic block, and lowers the landingpad instruction
  directly to two CopyFromReg nodes reading the *virtual* registers. This
  is safe because virtual registers don't get clobbered.

  A future patch will remove the ISD::EXCEPTIONADDR and ISD::EHSELECTION
  nodes.

Together, these changes fix llvm PR 16038 ('qt4 webcore file results in "Bad machine code: Using an undefined physical register"'), and should make it possible again to compile the FreeBSD www/qt4-webkit port again on the i386 arch.

Only r185594, r185615 and r185616 apply to the release_33 branch without modification, so I have attached a modified version of r186617 that does apply.

-Dimitry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm-r185617-rel33.diff
Type: application/octet-stream
Size: 4387 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130708/490395c3/attachment.obj>


More information about the llvm-commits mailing list