From: Martin Jambor Date: Mon, 14 Jul 2008 11:28:39 +0000 (+0200) Subject: tree-switch-conversion.c (gen_inbound_check): Make sure the type in which we generate... X-Git-Tag: releases/gcc-4.4.0~3860 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=145544ab093faacab5a7349f0ceaf96a70733cf0;p=gcc.git tree-switch-conversion.c (gen_inbound_check): Make sure the type in which we generate arithmetics is not a subrange. 2008-07-14 Martin Jambor * tree-switch-conversion.c (gen_inbound_check): Make sure the type in which we generate arithmetics is not a subrange. From-SVN: r137783 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 30813d89b186..aa13213fc86a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-07-14 Martin Jambor + + * tree-switch-conversion.c (gen_inbound_check): Make sure the type + in which we generate arithmetics is not a subrange. + 2008-07-14 Martin Jambor * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable. diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c index 0ce5fc91ead9..36c87f9bd518 100644 --- a/gcc/tree-switch-conversion.c +++ b/gcc/tree-switch-conversion.c @@ -622,7 +622,7 @@ gen_inbound_check (tree swtch) tree label_decl3 = create_artificial_label (); tree label1, label2, label3; - tree utype = unsigned_type_for (TREE_TYPE (info.index_expr)); + tree utype; tree tmp_u; tree cast, cast_assign; tree ulb, minus, minus_assign; @@ -638,6 +638,12 @@ gen_inbound_check (tree swtch) gcc_assert (info.default_values); bb0 = bb_for_stmt (swtch); + /* Make sure we do not generate arithmetics in a subrange. */ + if (TREE_TYPE (TREE_TYPE (info.index_expr))) + utype = unsigned_type_for (TREE_TYPE (TREE_TYPE (info.index_expr))); + else + utype = unsigned_type_for (TREE_TYPE (info.index_expr)); + /* (end of) block 0 */ bsi = bsi_for_stmt (info.arr_ref_first); tmp_u = make_rename_temp (utype, "csui");