https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101322
Peter Bergner <bergner at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-08-26 Target|powerpc-*-linux-gnu |powerpc*-*-linux-gnu Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 Assignee|unassigned at gcc dot gnu.org |bergner at gcc dot gnu.org --- Comment #1 from Peter Bergner <bergner at gcc dot gnu.org> --- Confirmed. I see what the problem is. When we expand the built-in, the cast to the proper type is lost and we only see a char *vpp. We then use that type to create a temporary and we end up with a reg:QI rather than a reg:OO. Is the casted pointer type supposed to be stripped away like that? Anyway, I can work around that since I know what the temporary type should be rather than stealing the type from the src operand.