This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [x32] PATCH: PR middle-end/47725: [x32] error: unable to find a register to spill in class DIREG
- From: Eric Botcazou <ebotcazou at adacore dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: Bernd Schmidt <bernds at codesourcery dot com>, Richard Henderson <rth at redhat dot com>, Uros Bizjak <ubizjak at gmail dot com>, gcc-patches at gcc dot gnu dot org, Jeff Law <law at redhat dot com>
- Date: Tue, 22 Mar 2011 21:05:57 +0100
- Subject: Re: [x32] PATCH: PR middle-end/47725: [x32] error: unable to find a register to spill in class DIREG
- References: <20110214185738.GA13004@intel.com> <AANLkTik4q7=sJXUwDPoQ1hP=f=0RtQTQ_gqGh=K0zeAv@mail.gmail.com> <AANLkTin_cm7dOcsnvYxCL1X_8TWavy9GCctEy9uyWptN@mail.gmail.com>
> It leads 2 problems:
>
> 1. Redundant zero-extension at function entry.
> 2. combine doesn't check zero-extension on hard register and leads to
> internal compiler error.
>
> Is there a way to avoid redundant zero-extension at function entry to
> solve both problems?
Eliminating the redundant extension in the callee seems indeed to be appealing.
You need to find out who decides that the incoming parameter needs to be zero-
extended. Is that the call to promote_function_mode in assign_parm_setup_reg?
--
Eric Botcazou