From ec35d57225c9cd7f69ab1b25982b90bfc0f878e7 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Wed, 30 Aug 2017 11:08:53 +0000 Subject: [PATCH] [5/77] Small tweak to array_value_type Store the type mode in a variable so that a later, more mechanical patch can change its type. 2017-08-30 Richard Sandiford Alan Hayward David Sherwood gcc/ * tree-switch-conversion.c (array_value_type): Only read TYPE_MODE once. Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE. Co-Authored-By: Alan Hayward Co-Authored-By: David Sherwood From-SVN: r251456 --- gcc/ChangeLog | 7 +++++++ gcc/tree-switch-conversion.c | 8 ++++---- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 7742722c1f4..8765c3cc7a3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2017-08-30 Richard Sandiford + Alan Hayward + David Sherwood + + * tree-switch-conversion.c (array_value_type): Only read TYPE_MODE + once. Use get_narrowest_mode instead of GET_CLASS_NARROWEST_MODE. + 2017-08-30 Richard Sandiford Alan Hayward David Sherwood diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c index 5a827a6f1f9..85d6816d119 100644 --- a/gcc/tree-switch-conversion.c +++ b/gcc/tree-switch-conversion.c @@ -1037,7 +1037,6 @@ array_value_type (gswitch *swtch, tree type, int num, { unsigned int i, len = vec_safe_length (info->constructors[num]); constructor_elt *elt; - machine_mode mode; int sign = 0; tree smaller_type; @@ -1051,8 +1050,9 @@ array_value_type (gswitch *swtch, tree type, int num, if (!INTEGRAL_TYPE_P (type)) return type; - mode = GET_CLASS_NARROWEST_MODE (GET_MODE_CLASS (TYPE_MODE (type))); - if (GET_MODE_SIZE (TYPE_MODE (type)) <= GET_MODE_SIZE (mode)) + machine_mode type_mode = TYPE_MODE (type); + machine_mode mode = get_narrowest_mode (type_mode); + if (GET_MODE_SIZE (type_mode) <= GET_MODE_SIZE (mode)) return type; if (len < (optimize_bb_for_size_p (gimple_bb (swtch)) ? 2 : 32)) @@ -1090,7 +1090,7 @@ array_value_type (gswitch *swtch, tree type, int num, mode = GET_MODE_WIDER_MODE (mode); if (mode == VOIDmode - || GET_MODE_SIZE (mode) >= GET_MODE_SIZE (TYPE_MODE (type))) + || GET_MODE_SIZE (mode) >= GET_MODE_SIZE (type_mode)) return type; } } -- 2.30.2