aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1994-05-28 19:03:12 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1994-05-28 19:03:12 -0400
commitd3b35d7584ef28d51bdf2a2fed49ba18c924fb81 (patch)
tree97e19bdcc458407bbcd6831a0818af1b20673521 /gcc
parent7d558bfe5f65554ad87d913129c8d3989f1d117d (diff)
downloadgcc-d3b35d7584ef28d51bdf2a2fed49ba18c924fb81.zip
gcc-d3b35d7584ef28d51bdf2a2fed49ba18c924fb81.tar.gz
gcc-d3b35d7584ef28d51bdf2a2fed49ba18c924fb81.tar.bz2
(expand_end_case): Have INDEX_TYPE track conversions done to
INDEX_EXPR. From-SVN: r7381
Diffstat (limited to 'gcc')
-rw-r--r--gcc/stmt.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/stmt.c b/gcc/stmt.c
index 40d5154..f62cb63 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -4462,8 +4462,12 @@ expand_end_case (orig_index)
else
{
if (TYPE_MODE (index_type) != index_mode)
- index_expr = convert (type_for_size (index_bits, 0),
- index_expr);
+ {
+ index_expr = convert (type_for_size (index_bits, 0),
+ index_expr);
+ index_type = TREE_TYPE (index_expr);
+ }
+
index = expand_expr (index_expr, NULL_RTX, VOIDmode, 0);
}
emit_queue ();
@@ -4500,6 +4504,7 @@ expand_end_case (orig_index)
index_expr = convert (thiscase->data.case_stmt.nominal_type,
fold (build (MINUS_EXPR, index_type,
index_expr, minval)));
+ index_type = TREE_TYPE (index_expr);
index = expand_expr (index_expr, NULL_RTX, VOIDmode, 0);
emit_queue ();
index = protect_from_queue (index, 0);