release_33 branch: proposing r185594, r185615, r185616 and r185617
Tom Stellard
tom at stellard.net
Fri Jul 19 07:39:06 PDT 2013
On Mon, Jul 08, 2013 at 09:55:47PM +0200, Dimitry Andric wrote:
> 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.
>
This patch adds a public function which I think will break the ABI, and
it was decided that stable releases shouldn't break the ABI.
> 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.
>
This patch adds two new public members which I also think will break the
ABI. I don't think I can accept r185594 and r185617 unless you can either:
1. Rework them in a way that doesn't break the ABI.
2. Revive the discussion about ABI compatibility of stable release and
get a general consensus that breaking the ABI is OK. The original
discussion is here:
https://groups.google.com/forum/#!msg/llvm-dev/NLxx_8SIaHI/5aNecjnpeXEJ
-Tom
> 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
More information about the llvm-commits
mailing list