Re: [71/77] Use opt_scalar_mode for mode iterators

2017-08-25 Thread Jeff Law
On 07/13/2017 03:03 AM, Richard Sandiford wrote:
> This patch uses opt_scalar_mode when iterating over scalar modes.
> 
> 2017-07-13  Richard Sandiford  
>   Alan Hayward  
>   David Sherwood  
> 
> gcc/
>   * coretypes.h (opt_scalar_mode): New typedef.
>   * gdbhooks.py (build_pretty_printers): Handle it.
>   * machmode.h (mode_iterator::get_2xwider): Add overload for
>   opt_mode.
>   * emit-rtl.c (init_emit_once): Use opt_scalar_mode when iterating
>   over scalar modes.
>   * expr.c (convert_mode_scalar): Likewise.
>   * omp-low.c (omp_clause_aligned_alignment): Likewise.
>   * optabs.c (expand_float): Likewise.
>   (expand_fix): Likewise.
>   * tree-vect-stmts.c (vectorizable_conversion): Likewise.
> 
> gcc/c-family/
>   * c-common.c (c_common_fixed_point_type_for_size): Use opt_scalar_mode
>   for the mode iterator.
OK.
jeff


[71/77] Use opt_scalar_mode for mode iterators

2017-07-13 Thread Richard Sandiford
This patch uses opt_scalar_mode when iterating over scalar modes.

2017-07-13  Richard Sandiford  
Alan Hayward  
David Sherwood  

gcc/
* coretypes.h (opt_scalar_mode): New typedef.
* gdbhooks.py (build_pretty_printers): Handle it.
* machmode.h (mode_iterator::get_2xwider): Add overload for
opt_mode.
* emit-rtl.c (init_emit_once): Use opt_scalar_mode when iterating
over scalar modes.
* expr.c (convert_mode_scalar): Likewise.
* omp-low.c (omp_clause_aligned_alignment): Likewise.
* optabs.c (expand_float): Likewise.
(expand_fix): Likewise.
* tree-vect-stmts.c (vectorizable_conversion): Likewise.

gcc/c-family/
* c-common.c (c_common_fixed_point_type_for_size): Use opt_scalar_mode
for the mode iterator.

Index: gcc/coretypes.h
===
--- gcc/coretypes.h 2017-07-13 09:18:53.271650545 +0100
+++ gcc/coretypes.h 2017-07-13 09:18:56.810392248 +0100
@@ -59,6 +59,7 @@ typedef const struct rtx_def *const_rtx;
 class scalar_int_mode;
 class scalar_float_mode;
 template class opt_mode;
+typedef opt_mode opt_scalar_mode;
 typedef opt_mode opt_scalar_int_mode;
 typedef opt_mode opt_scalar_float_mode;
 template class pod_mode;
Index: gcc/gdbhooks.py
===
--- gcc/gdbhooks.py 2017-07-13 09:18:53.273650396 +0100
+++ gcc/gdbhooks.py 2017-07-13 09:18:56.812392104 +0100
@@ -543,7 +543,8 @@ def build_pretty_printer():
 pp.add_printer_for_regex(r'opt_mode<(\S+)>',
  'opt_mode', OptMachineModePrinter)
 pp.add_printer_for_types(['opt_scalar_int_mode',
-  'opt_scalar_float_mode'],
+  'opt_scalar_float_mode',
+  'opt_scalar_mode'],
  'opt_mode', OptMachineModePrinter)
 pp.add_printer_for_regex(r'pod_mode<(\S+)>',
  'pod_mode', MachineModePrinter)
Index: gcc/machmode.h
===
--- gcc/machmode.h  2017-07-13 09:18:53.274650323 +0100
+++ gcc/machmode.h  2017-07-13 09:18:56.812392104 +0100
@@ -836,6 +836,13 @@ is_float_mode (machine_mode mode, T *flo
   /* Set mode iterator *ITER to the mode that is two times wider than the
  current one, if such a mode exists.  */
 
+  template
+  inline void
+  get_2xwider (opt_mode *iter)
+  {
+*iter = GET_MODE_2XWIDER_MODE (**iter);
+  }
+
   inline void
   get_2xwider (machine_mode *iter)
   {
Index: gcc/emit-rtl.c
===
--- gcc/emit-rtl.c  2017-07-13 09:18:54.682546579 +0100
+++ gcc/emit-rtl.c  2017-07-13 09:18:56.811392176 +0100
@@ -5891,6 +5891,7 @@ init_emit_once (void)
   int i;
   machine_mode mode;
   scalar_float_mode double_mode;
+  opt_scalar_mode smode_iter;
 
   /* Initialize the CONST_INT, CONST_WIDE_INT, CONST_DOUBLE,
  CONST_FIXED, and memory attribute hash tables.  */
@@ -6005,62 +6006,66 @@ init_emit_once (void)
   const_tiny_rtx[1][(int) mode] = gen_const_vector (mode, 1);
 }
 
-  FOR_EACH_MODE_IN_CLASS (mode, MODE_FRACT)
+  FOR_EACH_MODE_IN_CLASS (smode_iter, MODE_FRACT)
 {
-  FCONST0 (mode).data.high = 0;
-  FCONST0 (mode).data.low = 0;
-  FCONST0 (mode).mode = mode;
-  const_tiny_rtx[0][(int) mode] = CONST_FIXED_FROM_FIXED_VALUE (
- FCONST0 (mode), mode);
-}
-
-  FOR_EACH_MODE_IN_CLASS (mode, MODE_UFRACT)
-{
-  FCONST0 (mode).data.high = 0;
-  FCONST0 (mode).data.low = 0;
-  FCONST0 (mode).mode = mode;
-  const_tiny_rtx[0][(int) mode] = CONST_FIXED_FROM_FIXED_VALUE (
- FCONST0 (mode), mode);
-}
-
-  FOR_EACH_MODE_IN_CLASS (mode, MODE_ACCUM)
-{
-  FCONST0 (mode).data.high = 0;
-  FCONST0 (mode).data.low = 0;
-  FCONST0 (mode).mode = mode;
-  const_tiny_rtx[0][(int) mode] = CONST_FIXED_FROM_FIXED_VALUE (
- FCONST0 (mode), mode);
+  scalar_mode smode = *smode_iter;
+  FCONST0 (smode).data.high = 0;
+  FCONST0 (smode).data.low = 0;
+  FCONST0 (smode).mode = smode;
+  const_tiny_rtx[0][(int) smode]
+   = CONST_FIXED_FROM_FIXED_VALUE (FCONST0 (smode), smode);
+}
+
+  FOR_EACH_MODE_IN_CLASS (smode_iter, MODE_UFRACT)
+{
+  scalar_mode smode = *smode_iter;
+  FCONST0 (smode).data.high = 0;
+  FCONST0 (smode).data.low = 0;
+  FCONST0 (smode).mode = smode;
+  const_tiny_rtx[0][(int) smode]
+   = CONST_FIXED_FROM_FIXED_VALUE (FCONST0 (smode), smode);
+}
+
+  FOR_EACH_MODE_IN_CLASS (smode_iter, MODE_ACCUM)
+{
+  scalar_mode smode = *smode_iter;
+  FCONST0 (smode).data.high = 0;