Commit fdd84500 by Richard Henderson Committed by Richard Henderson

expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield an appropriate type...

        * expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
        an appropriate type, use the mode instead.

From-SVN: r123477
parent 696fbee7
2007-04-03 Richard Henderson <rth@redhat.com>
* expr.c (store_expr): If get_signed_or_unsigned_type doesn't yield
an appropriate type, use the mode instead.
2007-04-03 Richard Sandiford <richard@codesourcery.com>
* config.gcc (mips-wrs-vxworks): Add vx-common.h to tm_file.
......
......@@ -4383,9 +4383,19 @@ store_expr (tree exp, rtx target, int call_param_p)
{
if (TYPE_UNSIGNED (TREE_TYPE (exp))
!= SUBREG_PROMOTED_UNSIGNED_P (target))
exp = fold_convert
(get_signed_or_unsigned_type
(SUBREG_PROMOTED_UNSIGNED_P (target), TREE_TYPE (exp)), exp);
{
/* Some types, e.g. Fortran's logical*4, won't have a signed
version, so use the mode instead. */
tree ntype
= (get_signed_or_unsigned_type
(SUBREG_PROMOTED_UNSIGNED_P (target), TREE_TYPE (exp)));
if (ntype == NULL)
ntype = lang_hooks.types.type_for_mode
(TYPE_MODE (TREE_TYPE (exp)),
SUBREG_PROMOTED_UNSIGNED_P (target));
exp = fold_convert (ntype, exp);
}
exp = fold_convert (lang_hooks.types.type_for_mode
(GET_MODE (SUBREG_REG (target)),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment