https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119979
--- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> ---
(In reply to Jeffrey A. Law from comment #3)
> sh4eb is showing similar failures
Is this the same issue:
static machine_mode
sh_promote_function_mode (const_tree type, machine_mode mode,
int *punsignedp, const_tree funtype,
int for_return)
{
if (sh_promote_prototypes (funtype))
return promote_mode (type, mode, punsignedp);
else
return default_promote_function_mode (type, mode, punsignedp, funtype,
for_return);
}
The incoming int arg is promoted to SImode:
machine_mode
promote_function_mode (const_tree type, machine_mode mode, int *punsignedp,
const_tree funtype, int for_return)
{
/* Called without a type node for a libcall. */
if (type == NULL_TREE)
{
if (INTEGRAL_MODE_P (mode))
return targetm.calls.promote_function_mode (NULL_TREE, mode,
punsignedp, funtype,
for_return);
else
return mode;
}
switch (TREE_CODE (type))
{
case INTEGER_TYPE: case ENUMERAL_TYPE: case BOOLEAN_TYPE:
case REAL_TYPE: case OFFSET_TYPE: case FIXED_POINT_TYPE:
case POINTER_TYPE: case REFERENCE_TYPE:
return targetm.calls.promote_function_mode (type, mode, punsignedp,
funtype,
for_return);
default:
return mode;
}
}