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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2022-06-14
                 CC|                            |hjl.tools at gmail dot com
     Ever confirmed|0                           |1

--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
Probably something like:

diff --git a/gcc/config/i386/i386.cc b/gcc/config/i386/i386.cc
index 3d189e124e4..f158cc3aaea 100644
--- a/gcc/config/i386/i386.cc
+++ b/gcc/config/i386/i386.cc
@@ -3348,7 +3348,7 @@ ix86_function_arg (cumulative_args_t cum_v, const
function_arg_info &arg)
       if (POINTER_TYPE_P (arg.type))
        {
          /* This is the pointer argument.  */
-         gcc_assert (TYPE_MODE (arg.type) == Pmode);
+         gcc_assert (TYPE_MODE (arg.type) == ptr_mode);
          /* It is at -WORD(AP) in the current frame in interrupt and
             exception handlers.  */
          reg = plus_constant (Pmode, arg_pointer_rtx, -UNITS_PER_WORD);

Pointer mode and Pmode can be distinct for x32 target.  However, I have no idea
what goes into interrupt frame for x32. Let's ask HJ.

Reply via email to