https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101351

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|ice-on-valid-code           |ice-on-invalid-code
     Ever confirmed|0                           |1
   Last reconfirmed|                            |2021-07-07
             Status|UNCONFIRMED                 |NEW

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #1)
> I think this is invalid code but hard to diagnose (_Complex long doesn't fit
> "rax", not sure if we're supposed to allocate a register pair here
> magically).

The register pair part is done by ix86_hard_regno_nregs which has:
  if (COMPLEX_MODE_P (mode))
    return 2;

I noticed in VALID_INT_MODE_P accepts C*Imode's.  I don't know if it that is
expected or not.


Note on aarch64 if I use x1 instead of eax, I get:
error: register specified for 'a' isn't suitable for data type

Because the aarch64 backend rejects the complex integer modes.

I really doubt the complex integer modes show up in RTL these days anyways.
The only thing to take care of is making sure the ABI is the same for complex
int arguments.

Reply via email to