Re: [65/77] Add a SCALAR_TYPE_MODE macro

2017-08-24 Thread Jeff Law
On 07/13/2017 03:01 AM, Richard Sandiford wrote:
> This patch adds a SCALAR_TYPE_MODE macro, along the same lines as
> SCALAR_INT_TYPE_MODE and SCALAR_FLOAT_TYPE_MODE.  It also adds
> two instances of as_a  to c_common_type, when converting
> an unsigned fixed-point SCALAR_TYPE_MODE to the equivalent signed mode.
> 
> 2017-07-13  Richard Sandiford  
>   Alan Hayward  
>   David Sherwood  
> 
> gcc/
>   * tree.h (SCALAR_TYPE_MODE): New macro.
>   * expr.c (expand_expr_addr_expr_1): Use it.
>   (expand_expr_real_2): Likewise.
>   * fold-const.c (fold_convert_const_fixed_from_fixed): Likeise.
>   (fold_convert_const_fixed_from_int): Likewise.
>   (fold_convert_const_fixed_from_real): Likewise.
>   (native_encode_fixed): Likewise
>   (native_encode_complex): Likewise
>   (native_encode_vector): Likewise.
>   (native_interpret_fixed): Likewise.
>   (native_interpret_real): Likewise.
>   (native_interpret_complex): Likewise.
>   (native_interpret_vector): Likewise.
>   * omp-simd-clone.c (simd_clone_adjust_return_type): Likewise.
>   (simd_clone_adjust_argument_types): Likewise.
>   (simd_clone_init_simd_arrays): Likewise.
>   (simd_clone_adjust): Likewise.
>   * stor-layout.c (layout_type): Likewise.
>   * tree.c (build_minus_one_cst): Likewise.
>   * tree-cfg.c (verify_gimple_assign_ternary): Likewise.
>   * tree-inline.c (estimate_move_cost): Likewise.
>   * tree-ssa-math-opts.c (convert_plusminus_to_widen): Likewise.
>   * tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
>   (vectorizable_reduction): Likewise.
>   * tree-vect-patterns.c (vect_recog_widen_mult_pattern): Likewise.
>   (vect_recog_mixed_size_cond_pattern): Likewise.
>   (check_bool_pattern): Likewise.
>   (adjust_bool_pattern): Likewise.
>   (search_type_for_mask_1): Likewise.
>   * tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
>   * tree-vect-stmts.c (vectorizable_conversion): Likewise.
>   * ubsan.c (ubsan_encode_value): Likewise.
>   * varasm.c (output_constant): Likewise.
> 
> gcc/c-family/
>   * c-lex.c (interpret_fixed): Use SCALAR_TYPE_MODE.
>   * c-common.c (c_build_vec_perm_expr): Likewise.
> 
> gcc/c/
>   * c-typeck.c (build_binary_op): Use SCALAR_TYPE_MODE.
>   (c_common_type): Likewise.  Use as_a  when setting
>   m1 and m2 to the signed equivalent of a fixed-point
>   SCALAR_TYPE_MODE.
> 
> gcc/cp/
>   * typeck.c (cp_build_binary_op): Use SCALAR_TYPE_MODE.
OK.
Jeff


[65/77] Add a SCALAR_TYPE_MODE macro

2017-07-13 Thread Richard Sandiford
This patch adds a SCALAR_TYPE_MODE macro, along the same lines as
SCALAR_INT_TYPE_MODE and SCALAR_FLOAT_TYPE_MODE.  It also adds
two instances of as_a  to c_common_type, when converting
an unsigned fixed-point SCALAR_TYPE_MODE to the equivalent signed mode.

2017-07-13  Richard Sandiford  
Alan Hayward  
David Sherwood  

gcc/
* tree.h (SCALAR_TYPE_MODE): New macro.
* expr.c (expand_expr_addr_expr_1): Use it.
(expand_expr_real_2): Likewise.
* fold-const.c (fold_convert_const_fixed_from_fixed): Likeise.
(fold_convert_const_fixed_from_int): Likewise.
(fold_convert_const_fixed_from_real): Likewise.
(native_encode_fixed): Likewise
(native_encode_complex): Likewise
(native_encode_vector): Likewise.
(native_interpret_fixed): Likewise.
(native_interpret_real): Likewise.
(native_interpret_complex): Likewise.
(native_interpret_vector): Likewise.
* omp-simd-clone.c (simd_clone_adjust_return_type): Likewise.
(simd_clone_adjust_argument_types): Likewise.
(simd_clone_init_simd_arrays): Likewise.
(simd_clone_adjust): Likewise.
* stor-layout.c (layout_type): Likewise.
* tree.c (build_minus_one_cst): Likewise.
* tree-cfg.c (verify_gimple_assign_ternary): Likewise.
* tree-inline.c (estimate_move_cost): Likewise.
* tree-ssa-math-opts.c (convert_plusminus_to_widen): Likewise.
* tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
(vectorizable_reduction): Likewise.
* tree-vect-patterns.c (vect_recog_widen_mult_pattern): Likewise.
(vect_recog_mixed_size_cond_pattern): Likewise.
(check_bool_pattern): Likewise.
(adjust_bool_pattern): Likewise.
(search_type_for_mask_1): Likewise.
* tree-vect-slp.c (vect_schedule_slp_instance): Likewise.
* tree-vect-stmts.c (vectorizable_conversion): Likewise.
* ubsan.c (ubsan_encode_value): Likewise.
* varasm.c (output_constant): Likewise.

gcc/c-family/
* c-lex.c (interpret_fixed): Use SCALAR_TYPE_MODE.
* c-common.c (c_build_vec_perm_expr): Likewise.

gcc/c/
* c-typeck.c (build_binary_op): Use SCALAR_TYPE_MODE.
(c_common_type): Likewise.  Use as_a  when setting
m1 and m2 to the signed equivalent of a fixed-point
SCALAR_TYPE_MODE.

gcc/cp/
* typeck.c (cp_build_binary_op): Use SCALAR_TYPE_MODE.

Index: gcc/tree.h
===
--- gcc/tree.h  2017-07-13 09:18:38.668812030 +0100
+++ gcc/tree.h  2017-07-13 09:18:54.005596227 +0100
@@ -1852,6 +1852,8 @@ #define TYPE_MODE_RAW(NODE) (TYPE_CHECK
 #define TYPE_MODE(NODE) \
   (VECTOR_TYPE_P (TYPE_CHECK (NODE)) \
? vector_type_mode (NODE) : (NODE)->type_common.mode)
+#define SCALAR_TYPE_MODE(NODE) \
+  (as_a  (TYPE_CHECK (NODE)->type_common.mode))
 #define SCALAR_INT_TYPE_MODE(NODE) \
   (as_a  (TYPE_CHECK (NODE)->type_common.mode))
 #define SCALAR_FLOAT_TYPE_MODE(NODE) \
Index: gcc/expr.c
===
--- gcc/expr.c  2017-07-13 09:18:53.273650396 +0100
+++ gcc/expr.c  2017-07-13 09:18:53.997596816 +0100
@@ -7758,7 +7758,7 @@ expand_expr_addr_expr_1 (tree exp, rtx t
 The expression is therefore always offset by the size of the
 scalar type.  */
   offset = 0;
-  bitpos = GET_MODE_BITSIZE (TYPE_MODE (TREE_TYPE (exp)));
+  bitpos = GET_MODE_BITSIZE (SCALAR_TYPE_MODE (TREE_TYPE (exp)));
   inner = TREE_OPERAND (exp, 0);
   break;
 
@@ -9436,7 +9436,7 @@ #define REDUCE_BIT_FIELD(expr)(reduce_b
{
  tree sel_type = TREE_TYPE (treeop2);
  machine_mode vmode
-   = mode_for_vector (TYPE_MODE (TREE_TYPE (sel_type)),
+   = mode_for_vector (SCALAR_TYPE_MODE (TREE_TYPE (sel_type)),
   TYPE_VECTOR_SUBPARTS (sel_type));
  gcc_assert (GET_MODE_CLASS (vmode) == MODE_VECTOR_INT);
  op2 = simplify_subreg (vmode, op2, TYPE_MODE (sel_type), 0);
Index: gcc/fold-const.c
===
--- gcc/fold-const.c2017-07-13 09:18:51.658771072 +0100
+++ gcc/fold-const.c2017-07-13 09:18:53.998596742 +0100
@@ -2058,8 +2058,8 @@ fold_convert_const_fixed_from_fixed (tre
   tree t;
   bool overflow_p;
 
-  overflow_p = fixed_convert (, TYPE_MODE (type), _FIXED_CST (arg1),
- TYPE_SATURATING (type));
+  overflow_p = fixed_convert (, SCALAR_TYPE_MODE (type),
+ _FIXED_CST (arg1), TYPE_SATURATING (type));
   t = build_fixed (type, value);
 
   /* Propagate overflow flags.  */
@@ -2087,7 +2087,7 @@ fold_convert_const_fixed_from_int (tree
   else
 di.high = TREE_INT_CST_ELT (arg1, 1);
 
-  overflow_p = fixed_convert_from_int