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

--- Comment #11 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Andrew Pinski from comment #10)
> 
> Patch posted:
> https://gcc.gnu.org/pipermail/gcc-patches/2025-July/688286.html
> 
> That just fixes the tail recusion part. The tail call part I will post a new
> patch for PR 71761 in a few days.

I have the middle-end part for this but the x86 backend needs a fix. Once the
other patches are approved, I will turn this into a target bug and the x86
folks can fix it.

But the problem is here:
  a = ix86_function_value (TREE_TYPE (exp), decl_or_type, false);
  b = ix86_function_value (TREE_TYPE (DECL_RESULT (cfun->decl)),
                           cfun->decl, false);

The types are different because in one case it is the type of the struct while
in the other case (DECL_RESULT) it is a pointer/reference type to the struct.
So things fall over even though they are passed in the same register; the modes
are different.

Reply via email to