[llvm-commits] [PATCH] Teach -join-cross-class-copies to intersect register classes

Jakob Stoklund Olesen stoklund at 2pi.dk
Wed Apr 29 13:45:30 PDT 2009


This patch series teaches -join-register-classes to properly intersect  
register classes when joining two virtual registers. This avoids  
generating bad machine code in the blackfin backend. It should have no  
effect on other targets.

=== 01-tablegen-subclass.patch

Loosen TableGen's definition of a register subclass so a subclass is  
allowed to have a larger spill size. This is consistent with what - 
join-cross-class-copies does now.

See my ramblings here: http://lists.cs.uiuc.edu/pipermail/llvmdev/2009-April/021966.html

This patch is not actually necessary to solve my blackfin problems -  
it ensures that -join-cross-class-copies doesn't change behaviour on  
Alpha, PPC, SPU, and X86 where a register may have multiple spill sizes.

=== 02-intersection-regclass.patch

Implement the intersection(A, B) function that find the largest common  
subclass of two register classes.

=== 03-join-cross-intersection.patch

Use intersection() to determine the new register class of a joined  
virtual register.




-------------- next part --------------
A non-text attachment was scrubbed...
Name: 01-tablegen-subclass.patch
Type: application/octet-stream
Size: 1477 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20090429/41038924/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 02-intersection-regclass.patch
Type: application/octet-stream
Size: 2563 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20090429/41038924/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 03-join-cross-intersection.patch
Type: application/octet-stream
Size: 1820 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20090429/41038924/attachment-0002.obj>


More information about the llvm-commits mailing list