aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorFalk Hueffner <falk.hueffner@student.uni-tuebingen.de>2003-03-16 19:43:53 +0000
committerRichard Henderson <rth@gcc.gnu.org>2003-03-16 11:43:53 -0800
commit0a71919d5257d2e9097d79d00d840f4ecfd746c4 (patch)
treeb2938cc461d63e42039bf0d2ef7b462ae30c5c39 /gcc/tree.c
parent1f5a253a36c2e680af7a627a5077a61fb8afe6b6 (diff)
downloadgcc-0a71919d5257d2e9097d79d00d840f4ecfd746c4.zip
gcc-0a71919d5257d2e9097d79d00d840f4ecfd746c4.tar.gz
gcc-0a71919d5257d2e9097d79d00d840f4ecfd746c4.tar.bz2
re PR target/9164 ([Alpha] improper code generation)
PR target/9164 * tree.c (get_narrower): For extensions with unchanged bit number, return the unsignedness of the outer mode. * gcc.c-torture/execute/20030316-1.c: New test case. From-SVN: r64440
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 0130859..30a1c59 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -3958,10 +3958,10 @@ get_narrower (op, unsignedp_ptr)
/* See what's inside this conversion. If we decide to strip it,
we will set WIN. */
- op = TREE_OPERAND (op, 0);
if (bitschange > 0)
{
+ op = TREE_OPERAND (op, 0);
/* An extension: the outermost one can be stripped,
but remember whether it is zero or sign extension. */
if (first)
@@ -3980,6 +3980,7 @@ get_narrower (op, unsignedp_ptr)
if (first)
uns = TREE_UNSIGNED (TREE_TYPE (op));
first = 0;
+ op = TREE_OPERAND (op, 0);
}
win = op;