[llvm] r280783 - Remove unnecessary call to getAllocatableRegClass

Justin Bogner via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 28 13:34:24 PDT 2016


Matt Arsenault <arsenm2 at gmail.com> writes:
>> On Oct 27, 2016, at 15:39, Justin Bogner <mail at justinbogner.com> wrote:
>> 
>> Quentin Colombet via llvm-commits <llvm-commits at lists.llvm.org> writes:
>>>> On Sep 30, 2016, at 12:07 PM, Krzysztof Parzyszek via llvm-commits
>>>> <llvm-commits at lists.llvm.org> wrote:
>>>> 
>>>> On 9/30/2016 1:46 PM, Justin Bogner via llvm-commits wrote:
>>>>> The assert I'm seeing is in the case where `OpRC != nullptr` but
>>>>> `ConstrainedRC == nullptr`. Quentin's suggestion would call
>>>>> getAllocatableClass(DstRC) in this case, whereas in the committed code
>>>>> we just go ahead and do MRI->createVirtualRegister(OpRC). The call to
>>>>> createVirtualRegister asserts because OpRC isn't allocatable.
>>>> 
>>>> This doesn't sound right. This implies that a register was created
>>>> for the operand that is not compatible with the operand's
>>>> class. Sounds like the problem is somewhere else.
>>> 
>>> That’s exactly what this code is supposed to fix IIRC. Thus, the
>>> current patch does not sound right :).
>> 
>> Ping. Matt, have you had a chance to look at this?
>
> The problem is I want to use the output from constrainRegClass as the
> virtual register class instead of getAllocatableClass. Instead of the
> assert in the case where constrainRegClass fails, would it work to try
> using getAllocatableClass instead? i.e. getAllocatableClass is the
> fallback if constrainRegClass fails and then the same create vreg and
> copy

Do you mean something like this?

-------------- next part --------------
A non-text attachment was scrubbed...
Name: addregop.patch
Type: text/x-patch
Size: 757 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161028/510a60ba/attachment.bin>


More information about the llvm-commits mailing list