Some tests for COMPLETE_TYPE_P are just protecting against a null
TYPE_SIZE or TYPE_SIZE_UNIT.  Rather than replace them with a new
macro, it seemed clearer to write out the underlying test.

2018-10-15  Richard Sandiford  <richard.sandif...@arm.com>

gcc/
        * calls.c (initialize_argument_information): Replace COMPLETE_TYPE_P
        with checks for null.
        * config/aarch64/aarch64.c (aapcs_vfp_sub_candidate): Likewise.
        * config/arm/arm.c (aapcs_vfp_sub_candidate): Likewise.
        * config/powerpcspe/powerpcspe.c (rs6000_aggregate_candidate):
        Likewise.
        * config/riscv/riscv.c (riscv_flatten_aggregate_field): Likewise.
        * config/rs6000/rs6000.c (rs6000_aggregate_candidate): Likewise.
        * expr.c (expand_assignment, safe_from_p): Likewise.
        (expand_expr_real_1): Likewise.
        * tree-data-ref.c (initialize_data_dependence_relation): Likewise.
        * tree-sra.c (maybe_add_sra_candidate): Likewise.
        (find_param_candidates): Likewise.
        * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Likewise.
        * tree-vrp.c (vrp_prop::check_mem_ref): Likewise.

gcc/lto/
        * lto-symtab.c (warn_type_compatibility_p): Likewise.

Index: gcc/calls.c
===================================================================
--- gcc/calls.c 2018-10-05 13:46:11.115788209 +0100
+++ gcc/calls.c 2018-10-15 14:12:54.016553288 +0100
@@ -2039,7 +2039,7 @@ initialize_argument_information (int num
                 function being called.  */
              rtx copy;
 
-             if (!COMPLETE_TYPE_P (type)
+             if (!TYPE_SIZE_UNIT (type)
                  || TREE_CODE (TYPE_SIZE_UNIT (type)) != INTEGER_CST
                  || (flag_stack_check == GENERIC_STACK_CHECK
                      && compare_tree_int (TYPE_SIZE_UNIT (type),
Index: gcc/config/aarch64/aarch64.c
===================================================================
--- gcc/config/aarch64/aarch64.c        2018-10-15 14:08:45.970608817 +0100
+++ gcc/config/aarch64/aarch64.c        2018-10-15 14:12:54.020553256 +0100
@@ -13000,7 +13000,7 @@ aapcs_vfp_sub_candidate (const_tree type
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
@@ -13033,7 +13033,7 @@ aapcs_vfp_sub_candidate (const_tree type
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
@@ -13066,7 +13066,7 @@ aapcs_vfp_sub_candidate (const_tree type
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
Index: gcc/config/arm/arm.c
===================================================================
--- gcc/config/arm/arm.c        2018-10-05 13:46:14.375761802 +0100
+++ gcc/config/arm/arm.c        2018-10-15 14:12:54.024553222 +0100
@@ -5927,7 +5927,7 @@ aapcs_vfp_sub_candidate (const_tree type
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
@@ -5960,7 +5960,7 @@ aapcs_vfp_sub_candidate (const_tree type
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
@@ -5993,7 +5993,7 @@ aapcs_vfp_sub_candidate (const_tree type
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
Index: gcc/config/powerpcspe/powerpcspe.c
===================================================================
--- gcc/config/powerpcspe/powerpcspe.c  2018-10-05 13:46:13.855766014 +0100
+++ gcc/config/powerpcspe/powerpcspe.c  2018-10-15 14:12:54.032553156 +0100
@@ -11540,7 +11540,7 @@ rs6000_aggregate_candidate (const_tree t
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
@@ -11573,7 +11573,7 @@ rs6000_aggregate_candidate (const_tree t
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
@@ -11606,7 +11606,7 @@ rs6000_aggregate_candidate (const_tree t
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
Index: gcc/config/riscv/riscv.c
===================================================================
--- gcc/config/riscv/riscv.c    2018-10-05 13:46:13.879765820 +0100
+++ gcc/config/riscv/riscv.c    2018-10-15 14:12:54.032553156 +0100
@@ -2290,7 +2290,7 @@ riscv_flatten_aggregate_field (const_tre
     {
     case RECORD_TYPE:
      /* Can't handle incomplete types nor sizes that are not fixed.  */
-     if (!COMPLETE_TYPE_P (type)
+     if (!TYPE_SIZE (type)
         || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST
         || !tree_fits_uhwi_p (TYPE_SIZE (type)))
        return -1;
@@ -2319,7 +2319,7 @@ riscv_flatten_aggregate_field (const_tre
 
        /* Can't handle incomplete types nor sizes that are not fixed.  */
        if (n_subfields <= 0
-           || !COMPLETE_TYPE_P (type)
+           || !TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST
            || !index
            || !TYPE_MAX_VALUE (index)
Index: gcc/config/rs6000/rs6000.c
===================================================================
--- gcc/config/rs6000/rs6000.c  2018-10-15 14:08:45.994608617 +0100
+++ gcc/config/rs6000/rs6000.c  2018-10-15 14:12:54.040553089 +0100
@@ -10386,7 +10386,7 @@ rs6000_aggregate_candidate (const_tree t
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
@@ -10419,7 +10419,7 @@ rs6000_aggregate_candidate (const_tree t
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
@@ -10452,7 +10452,7 @@ rs6000_aggregate_candidate (const_tree t
 
        /* Can't handle incomplete types nor sizes that are not
           fixed.  */
-       if (!COMPLETE_TYPE_P (type)
+       if (!TYPE_SIZE (type)
            || TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
          return -1;
 
Index: gcc/expr.c
===================================================================
--- gcc/expr.c  2018-10-05 13:46:10.003797217 +0100
+++ gcc/expr.c  2018-10-15 14:12:54.040553089 +0100
@@ -5300,7 +5300,7 @@ expand_assignment (tree to, tree from, b
      needs to be done.  Handling this in the normal way is safe because no
      computation is done before the call.  The same is true for SSA names.  */
   if (TREE_CODE (from) == CALL_EXPR && ! aggregate_value_p (from, from)
-      && COMPLETE_TYPE_P (TREE_TYPE (from))
+      && TYPE_SIZE (TREE_TYPE (from))
       && TREE_CODE (TYPE_SIZE (TREE_TYPE (from))) == INTEGER_CST
       && ! (((VAR_P (to)
              || TREE_CODE (to) == PARM_DECL
@@ -7518,7 +7518,9 @@ safe_from_p (const_rtx x, tree exp, int
         So we assume here that something at a higher level has prevented a
         clash.  This is somewhat bogus, but the best we can do.  Only
         do this when X is BLKmode and when we are at the top level.  */
-      || (top_p && TREE_TYPE (exp) != 0 && COMPLETE_TYPE_P (TREE_TYPE (exp))
+      || (top_p
+         && TREE_TYPE (exp) != 0
+         && TYPE_SIZE (TREE_TYPE (exp))
          && TREE_CODE (TYPE_SIZE (TREE_TYPE (exp))) != INTEGER_CST
          && (TREE_CODE (TREE_TYPE (exp)) != ARRAY_TYPE
              || TYPE_ARRAY_MAX_SIZE (TREE_TYPE (exp)) == NULL_TREE
@@ -10523,7 +10525,7 @@ expand_expr_real_1 (tree exp, rtx target
        orig_op0 = op0
          = expand_expr_real (tem,
                              (TREE_CODE (TREE_TYPE (tem)) == UNION_TYPE
-                              && COMPLETE_TYPE_P (TREE_TYPE (tem))
+                              && TYPE_SIZE (TREE_TYPE (tem))
                               && (TREE_CODE (TYPE_SIZE (TREE_TYPE (tem)))
                                   != INTEGER_CST)
                               && modifier != EXPAND_STACK_PARM
Index: gcc/tree-data-ref.c
===================================================================
--- gcc/tree-data-ref.c 2018-10-05 13:46:11.115788209 +0100
+++ gcc/tree-data-ref.c 2018-10-15 14:12:54.040553089 +0100
@@ -2487,8 +2487,8 @@ initialize_data_dependence_relation (str
        }
 
       /* Try to approach equal type sizes.  */
-      if (!COMPLETE_TYPE_P (type_a)
-         || !COMPLETE_TYPE_P (type_b)
+      if (!TYPE_SIZE_UNIT (type_a)
+         || !TYPE_SIZE_UNIT (type_b)
          || !tree_fits_uhwi_p (TYPE_SIZE_UNIT (type_a))
          || !tree_fits_uhwi_p (TYPE_SIZE_UNIT (type_b)))
        break;
Index: gcc/tree-sra.c
===================================================================
--- gcc/tree-sra.c      2018-08-28 11:25:46.034881666 +0100
+++ gcc/tree-sra.c      2018-10-15 14:12:54.040553089 +0100
@@ -1988,9 +1988,9 @@ maybe_add_sra_candidate (tree var)
       reject (var, "is volatile");
       return false;
     }
-  if (!COMPLETE_TYPE_P (type))
+  if (!TYPE_SIZE (type))
     {
-      reject (var, "has incomplete type");
+      reject (var, "type size unknown");
       return false;
     }
   if (!tree_fits_uhwi_p (TYPE_SIZE (type)))
@@ -4176,7 +4176,7 @@ find_param_candidates (void)
       else if (!AGGREGATE_TYPE_P (type))
        continue;
 
-      if (!COMPLETE_TYPE_P (type)
+      if (!TYPE_SIZE (type)
          || !tree_fits_uhwi_p (TYPE_SIZE (type))
           || tree_to_uhwi (TYPE_SIZE (type)) == 0
          || (AGGREGATE_TYPE_P (type)
Index: gcc/tree-ssa-alias.c
===================================================================
--- gcc/tree-ssa-alias.c        2018-09-10 17:38:19.470814110 +0100
+++ gcc/tree-ssa-alias.c        2018-10-15 14:12:54.040553089 +0100
@@ -1182,7 +1182,8 @@ indirect_ref_may_alias_decl_p (tree ref1
   /* If the size of the access relevant for TBAA through the pointer
      is bigger than the size of the decl we can't possibly access the
      decl via that pointer.  */
-  if (DECL_SIZE (base2) && COMPLETE_TYPE_P (TREE_TYPE (ptrtype1))
+  if (DECL_SIZE (base2)
+      && TYPE_SIZE (TREE_TYPE (ptrtype1))
       && poly_int_tree_p (DECL_SIZE (base2))
       && poly_int_tree_p (TYPE_SIZE (TREE_TYPE (ptrtype1)))
       /* ???  This in turn may run afoul when a decl of type T which is
Index: gcc/tree-vrp.c
===================================================================
--- gcc/tree-vrp.c      2018-10-05 13:46:08.215811700 +0100
+++ gcc/tree-vrp.c      2018-10-15 14:12:54.044553056 +0100
@@ -4412,7 +4412,7 @@ vrp_prop::check_mem_ref (location_t loca
      not known.  */
   tree reftype = TREE_TYPE (arg);
   if (POINTER_TYPE_P (reftype)
-      || !COMPLETE_TYPE_P (reftype)
+      || !TYPE_SIZE_UNIT (reftype)
       || TREE_CODE (TYPE_SIZE_UNIT (reftype)) != INTEGER_CST
       || RECORD_OR_UNION_TYPE_P (reftype))
     return;
Index: gcc/lto/lto-symtab.c
===================================================================
--- gcc/lto/lto-symtab.c        2018-08-28 11:25:46.034881666 +0100
+++ gcc/lto/lto-symtab.c        2018-10-15 14:12:54.040553089 +0100
@@ -243,8 +243,8 @@ warn_type_compatibility_p (tree prevaili
   /* We can not use types_compatible_p because we permit some changes
      across types.  For example unsigned size_t and "signed size_t" may be
      compatible when merging C and Fortran types.  */
-  if (COMPLETE_TYPE_P (prevailing_type)
-      && COMPLETE_TYPE_P (type)
+  if (TYPE_SIZE (type)
+      && TYPE_SIZE (prevailing_type)
       /* While global declarations are never variadic, we can recurse here
         for function parameter types.  */
       && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST

Reply via email to