From 172f4957e10213b5ca7f7d4142b53ab4bd5619a4 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Sat, 22 Aug 1998 03:17:56 +0000 Subject: [PATCH] expmed.c (make_tree): Sign extend even if TREE_UNSIGNED... * expmed.c (make_tree) [CONST_INT]: Sign extend even if TREE_UNSIGNED, when bitsize of type's mode is larger than HOST_BITS_PER_WIDE_INT. From-SVN: r21904 --- gcc/ChangeLog | 4 ++++ gcc/expmed.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 319d3145150..ba4a8d33477 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -3,6 +3,10 @@ Fri Aug 21 23:07:46 1998 David S. Miller * config/sparc/sparc.md (TFmode splits): Handle destination registers being referenced in the address correctly. + * expmed.c (make_tree) [CONST_INT]: Sign extend even if + TREE_UNSIGNED, when bitsize of type's mode is larger than + HOST_BITS_PER_WIDE_INT. + Fri Aug 21 19:31:31 1998 Alexandre Petit-Bianco * tree.def (LABELED_BLOCK_EXPR, EXIT_BLOCK_EXPR): New tree nodes. diff --git a/gcc/expmed.c b/gcc/expmed.c index 2f656c281f1..c6efd6257d7 100644 --- a/gcc/expmed.c +++ b/gcc/expmed.c @@ -3767,7 +3767,9 @@ make_tree (type, x) { case CONST_INT: t = build_int_2 (INTVAL (x), - TREE_UNSIGNED (type) || INTVAL (x) >= 0 ? 0 : -1); + (TREE_UNSIGNED (type) + && (GET_MODE_BITSIZE (TYPE_MODE (type)) < HOST_BITS_PER_WIDE_INT)) + || INTVAL (x) >= 0 ? 0 : -1); TREE_TYPE (t) = type; return t; -- 2.30.2