[PATCH] D16239: Fix PR25526 by adding back limited cmpxchg pseudo-Insts

Tim Northover via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 3 11:47:57 PST 2016

Hi Ahmed,

On 15 January 2016 at 20:25, Ahmed Bougacha <ahmed.bougacha at gmail.com> wrote:
> So, I cringe as I'm typing this, but what about using an intrinsic for
> the comparison as well?

I've finally gotten around to attempting this idea properly, and I
don't think it's going to help. Through some hackery in FastISel, I
did manage to ensure the basic block's outs were physical, but ISel
specifically assumes that VRegs are assigned to anything escaping a
basic block (and asserts if not, in CopyValueToVirtualRegister).
That's not an assertion I'd be comfortable relaxing, even if the rest
of the patch was clean.

In general, I think that would also be too intrusive for the atomic
expansion pass and scarily fragile (we'd probably need a separate DAG
implementation as a fallback anyway in case the code isn't exactly
what's expected).

I'm updating the previous patch at the moment with your last round of
comments, but any other ideas are still welcome.



More information about the llvm-commits mailing list