diff options
Diffstat (limited to 'gcc/expmed.c')
-rw-r--r-- | gcc/expmed.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/gcc/expmed.c b/gcc/expmed.c index cdc403f..76b90fa 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -4108,21 +4108,22 @@ make_tree (type, x) make_tree (type, XEXP (x, 1)))); case LSHIFTRT: + t = (*lang_hooks.types.unsigned_type) (type); return fold (convert (type, - build (RSHIFT_EXPR, unsigned_type (type), - make_tree (unsigned_type (type), - XEXP (x, 0)), + build (RSHIFT_EXPR, t, + make_tree (t, XEXP (x, 0)), make_tree (type, XEXP (x, 1))))); case ASHIFTRT: + t = (*lang_hooks.types.signed_type) (type); return fold (convert (type, - build (RSHIFT_EXPR, signed_type (type), - make_tree (signed_type (type), XEXP (x, 0)), + build (RSHIFT_EXPR, t, + make_tree (t, XEXP (x, 0)), make_tree (type, XEXP (x, 1))))); case DIV: if (TREE_CODE (type) != REAL_TYPE) - t = signed_type (type); + t = (*lang_hooks.types.signed_type) (type); else t = type; @@ -4131,7 +4132,7 @@ make_tree (type, x) make_tree (t, XEXP (x, 0)), make_tree (t, XEXP (x, 1))))); case UDIV: - t = unsigned_type (type); + t = (*lang_hooks.types.unsigned_type) (type); return fold (convert (type, build (TRUNC_DIV_EXPR, t, make_tree (t, XEXP (x, 0)), |