Come up with jump_table ratio constants used in jump_table_cluster.
authorMartin Liska <mliska@suse.cz>
Thu, 28 Jun 2018 07:15:55 +0000 (09:15 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Thu, 28 Jun 2018 07:15:55 +0000 (07:15 +0000)
2018-06-28  Martin Liska  <mliska@suse.cz>

* tree-switch-conversion.c (jump_table_cluster::can_be_handled):
        Use newly introduced constants.
* tree-switch-conversion.h (struct jump_table_cluster):
        Define max_ratio_for_size and max_ratio_for_speed.

From-SVN: r262212

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

index 926f8bcac390cd56f38a868ab8e624a47977a421..8902e4ac366bce7eea0e9a0972a0a54836cbb851 100644 (file)
@@ -1,3 +1,10 @@
+2018-06-28  Martin Liska  <mliska@suse.cz>
+
+       * tree-switch-conversion.c (jump_table_cluster::can_be_handled):
+        Use newly introduced constants.
+       * tree-switch-conversion.h (struct jump_table_cluster):
+        Define max_ratio_for_size and max_ratio_for_speed.
+
 2018-06-28  Martin Liska  <mliska@suse.cz>
 
        * tree-switch-conversion.c (jump_table_cluster::find_jump_tables):
index ddd8cba7b98376f169ce9feb3f3edbf038753e4f..b79f2fdb6e659eb527d0415ce6ec58ca063dc7c1 100644 (file)
@@ -1180,7 +1180,8 @@ jump_table_cluster::can_be_handled (const vec<cluster *> &clusters,
   if (start == end)
     return true;
 
-  unsigned HOST_WIDE_INT max_ratio = optimize_insn_for_size_p () ? 3 : 8;
+  unsigned HOST_WIDE_INT max_ratio
+    = optimize_insn_for_size_p () ? max_ratio_for_size : max_ratio_for_speed;
   unsigned HOST_WIDE_INT range = get_range (clusters[start]->get_low (),
                                            clusters[end]->get_high ());
   /* Check overflow.  */
index 79a1320c4483f884dca22d444bd97e16c1bc85dd..4beac785f0581dd9fb33ae668ca193e9b6bcd84b 100644 (file)
@@ -257,6 +257,12 @@ struct jump_table_cluster: public group_cluster
 
   /* Return whether jump table expansion is allowed.  */
   static bool is_enabled (void);
+
+  /* Max growth ratio for code that is optimized for size.  */
+  static const unsigned HOST_WIDE_INT max_ratio_for_size = 3;
+
+  /* Max growth ratio for code that is optimized for speed.  */
+  static const unsigned HOST_WIDE_INT max_ratio_for_speed = 8;
 };
 
 /* A GIMPLE switch statement can be expanded to a short sequence of bit-wise