glider marked an inline comment as done.
glider added a comment.

In D65234#1615649 <https://reviews.llvm.org/D65234#1615649>, @efriedma wrote:

> For the "=x" thing I was talking about, try the following testcase:
>
>   void a() { struct S { unsigned x[4]; } z; asm volatile("%0":"=x"(z)); }
>   void a2() { struct S { unsigned x[8]; } z; asm volatile("%0":"=x"(z)); }
>
>
> clang trunk gives "error: couldn't allocate output register for constraint 
> 'x'" in the backend for both functions.  gcc prints "%xmm0" for the first, 
> and rejects the second; not exactly sure why it's rejecting the second, 
> though.  It would be nice if both worked, although I guess it's okay if we 
> print a reasonable error message.  Please add a testcase, at least.


Note that this is invalid assembly, as it emits a register name instead of an 
assembly instruction. I don't think it should work at all.
If we replace "%0" with a "nop", Clang will reject the second test, but will 
accept the first one.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D65234/new/

https://reviews.llvm.org/D65234



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to