------- Comment #2 from law at redhat dot com 2010-02-05 16:20 ------- The argument for using conflicts is that the vast majority of the time if the constraints force us to tie a specific source to the destination, then the other source must not use the same hard reg as the destination. There might be oddball cases where all the operands could share the same hard reg, but I suspect those would be extremely rare.
The argument against using conflicts is the conflict code works on liveness so we have to process the constraints and cause certain input operands to become live earlier than normal. However, we already do that for earlyclobbers, so it might not be too ugly. Using the costing models may be marginally simpler, but I doubt they'll be nearly as effective. In fact, for the example in my message, using the ira-reload code, costing models is insufficient to solve the problem because the only available register for the untied input reg is the hard register used by the output. So even with a high cost, we still allocate the output and untied input to the same hard reg triggering reload insanity. We're actually better off leaving the untied input unallocated. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42973