[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