OSDN Git Service

2008-07-14 Martin Jambor <mjambor@suse.cz>
authorjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Jul 2008 11:28:39 +0000 (11:28 +0000)
committerjamborm <jamborm@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 14 Jul 2008 11:28:39 +0000 (11:28 +0000)
* tree-switch-conversion.c (gen_inbound_check): Make sure the type
in which we generate arithmetics is not a subrange.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@137783 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/tree-switch-conversion.c

index 30813d8..aa13213 100644 (file)
@@ -1,5 +1,10 @@
 2008-07-14  Martin Jambor  <mjambor@suse.cz>
 
+       * 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  <mjambor@suse.cz>
+
        * Makefile.in (IPA_PROP_H): Added ipa-prop.h to IPA_PROP_H variable.
 
 2008-07-14  Richard Guenther  <rguenther@suse.de>
index 0ce5fc9..36c87f9 100644 (file)
@@ -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");