[PATCH] D37448: Fix cast assertion on MS inline assembly with vector spills (PR34021)
Erich Keane via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 5 13:13:52 PDT 2017
erichkeane added a comment.
In https://reviews.llvm.org/D37448#861211, @rnk wrote:
> I think this is a reasonable stop-gap fix since the code isn't trying to return EAX:EDX or XMM0 from the inline asm blob. This affects any function that contains inline asm and returns a vector, which is potentially a lot of stuff.
Actually... I've convinced myself that this is likely the correct fix for this bug. There is likely a separate bug for vector-types and struct return types, however I'd believe those aren't really things that anyone else supports.
According to our definition, v4si is NOT a "Vector" type, since a vector type requires it be a FP value. SO, we are converting an integer stored in eax/edx to a wider integer. Since assembly doesn't have a 'signed'-ness, I would assert that widening a register-stored variable to via zero-ext is the correct fix here.
In summary, I believe this is the correct fix for the bug as reported.
Repository:
rL LLVM
https://reviews.llvm.org/D37448
More information about the cfe-commits
mailing list