[Bug target/44532] x86-64 unnecessary parameter extension
jakub at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Mon Jun 14 08:02:00 GMT 2010
------- Comment #1 from jakub at gcc dot gnu dot org 2010-06-14 08:01 -------
tempreg = convert_to_mode (data->nominal_mode, tempreg, unsignedp);
if (GET_CODE (tempreg) == SUBREG
&& GET_MODE (tempreg) == data->nominal_mode
&& REG_P (SUBREG_REG (tempreg))
&& data->nominal_mode == data->passed_mode
&& GET_MODE (SUBREG_REG (tempreg)) == GET_MODE (data->entry_parm)
&& GET_MODE_SIZE (GET_MODE (tempreg))
< GET_MODE_SIZE (GET_MODE (data->entry_parm)))
{
/* The argument is already sign/zero extended, so note it
into the subreg. */
SUBREG_PROMOTED_VAR_P (tempreg) = 1;
SUBREG_PROMOTED_UNSIGNED_SET (tempreg, unsignedp);
}
For x86_64 and short/char, all the conditions above are true except that
nominal_mode (HImode) != passed_mode (SImode).
--
jakub at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |hubicka at gcc dot gnu dot
| |org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44532
More information about the Gcc-bugs
mailing list