alias.c (struct alias_set_entry): Pack properly.
authorRichard Biener <rguenther@suse.de>
Tue, 14 Mar 2017 12:47:42 +0000 (12:47 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Tue, 14 Mar 2017 12:47:42 +0000 (12:47 +0000)
2017-03-14  Richard Biener  <rguenther@suse.de>

* alias.c (struct alias_set_entry): Pack properly.
* cfgloop.h (struct loop): Likewise.
* cse.c (struct set): Likewise.
* ipa-utils.c (struct searchc_env): Likewise.
* loop-invariant.c (struct invariant): Likewise.
* lra-remat.c (struct cand): Likewise.
* recog.c (struct change_t): Likewise.
* rtl.h (struct address_info): Likewise.
* symbol-summary.h (function_summary): Likewise.
* tree-loop-distribution.c (struct partition): Likewise.
* tree-object-size.c (struct object_size_info): Likewise.
* tree-ssa-loop-ivopts.c (struct cost_pair): Likewise.
* tree-ssa-threadupdate.c (struct ssa_local_info_t): Likewise.
* tree-vect-data-refs.c (struct _vect_peel_info): Likewise.
* tree-vect-slp.c (struct _slp_oprnd_info): Likewise.
* tree-vect-stmts.c (struct simd_call_arg_info): Likewise.
* tree-vectorizer.h (struct _loop_vec_info): Likewise.
(struct _stmt_vec_info): Likewise.

From-SVN: r246121

18 files changed:
gcc/ChangeLog
gcc/alias.c
gcc/cfgloop.h
gcc/cse.c
gcc/ipa-utils.c
gcc/loop-invariant.c
gcc/lra-remat.c
gcc/recog.c
gcc/rtl.h
gcc/symbol-summary.h
gcc/tree-loop-distribution.c
gcc/tree-object-size.c
gcc/tree-ssa-loop-ivopts.c
gcc/tree-ssa-threadupdate.c
gcc/tree-vect-data-refs.c
gcc/tree-vect-slp.c
gcc/tree-vect-stmts.c
gcc/tree-vectorizer.h

index 8015a15169c50a248e1df417570d3f725d31f132..7c38be3c7fe4e29dc267eb2711b312d782c6fd92 100644 (file)
@@ -1,3 +1,24 @@
+2017-03-14  Richard Biener  <rguenther@suse.de>
+
+       * alias.c (struct alias_set_entry): Pack properly.
+       * cfgloop.h (struct loop): Likewise.
+       * cse.c (struct set): Likewise.
+       * ipa-utils.c (struct searchc_env): Likewise.
+       * loop-invariant.c (struct invariant): Likewise.
+       * lra-remat.c (struct cand): Likewise.
+       * recog.c (struct change_t): Likewise.
+       * rtl.h (struct address_info): Likewise.
+       * symbol-summary.h (function_summary): Likewise.
+       * tree-loop-distribution.c (struct partition): Likewise.
+       * tree-object-size.c (struct object_size_info): Likewise.
+       * tree-ssa-loop-ivopts.c (struct cost_pair): Likewise.
+       * tree-ssa-threadupdate.c (struct ssa_local_info_t): Likewise.
+       * tree-vect-data-refs.c (struct _vect_peel_info): Likewise.
+       * tree-vect-slp.c (struct _slp_oprnd_info): Likewise.
+       * tree-vect-stmts.c (struct simd_call_arg_info): Likewise.
+       * tree-vectorizer.h (struct _loop_vec_info): Likewise.
+       (struct _stmt_vec_info): Likewise.
+
 2017-03-14  Martin Liska  <mliska@suse.cz>
 
        PR target/79892
index e0ceaa29907f365225a108345b478a63b90c3f48..93c136f27d022688f16728d23c69696f7add9c1f 100644 (file)
@@ -126,15 +126,6 @@ struct GTY(()) alias_set_entry {
   /* The alias set number, as stored in MEM_ALIAS_SET.  */
   alias_set_type alias_set;
 
-  /* The children of the alias set.  These are not just the immediate
-     children, but, in fact, all descendants.  So, if we have:
-
-       struct T { struct S s; float f; }
-
-     continuing our example above, the children here will be all of
-     `int', `double', `float', and `struct S'.  */
-  hash_map<alias_set_hash, int> *children;
-
   /* Nonzero if would have a child of zero: this effectively makes this
      alias set the same as alias set zero.  */
   bool has_zero_child;
@@ -145,6 +136,15 @@ struct GTY(()) alias_set_entry {
   bool is_pointer;
   /* Nonzero if is_pointer or if one of childs have has_pointer set.  */
   bool has_pointer;
+
+  /* The children of the alias set.  These are not just the immediate
+     children, but, in fact, all descendants.  So, if we have:
+
+       struct T { struct S s; float f; }
+
+     continuing our example above, the children here will be all of
+     `int', `double', `float', and `struct S'.  */
+  hash_map<alias_set_hash, int> *children;
 };
 
 static int rtx_equal_for_memref_p (const_rtx, const_rtx);
index 80a191507f002da91f223fb6f7e21f8eaa3a7690..a8bec1d48af1e7acfcaf48c7518afca195abb7cf 100644 (file)
@@ -167,21 +167,6 @@ struct GTY ((chain_next ("%h.next"))) loop {
      nb_iterations.  */
   widest_int nb_iterations_estimate;
 
-  bool any_upper_bound;
-  bool any_estimate;
-  bool any_likely_upper_bound;
-
-  /* True if the loop can be parallel.  */
-  bool can_be_parallel;
-
-  /* True if -Waggressive-loop-optimizations warned about this loop
-     already.  */
-  bool warned_aggressive_loop_optimizations;
-
-  /* An integer estimation of the number of iterations.  Estimate_state
-     describes what is the state of the estimation.  */
-  enum loop_estimation estimate_state;
-
   /* If > 0, an integer, where the user asserted that for any
      I in [ 0, nb_iterations ) and for any J in
      [ I, min ( I + safelen, nb_iterations ) ), the Ith and Jth iterations
@@ -211,14 +196,29 @@ struct GTY ((chain_next ("%h.next"))) loop {
      that might result in hard to track down bugs in niter/scev consumers.  */
   unsigned constraints;
 
+  /* An integer estimation of the number of iterations.  Estimate_state
+     describes what is the state of the estimation.  */
+  ENUM_BITFIELD(loop_estimation) estimate_state : 8;
+
+  unsigned any_upper_bound : 1;
+  unsigned any_estimate : 1;
+  unsigned any_likely_upper_bound : 1;
+
+  /* True if the loop can be parallel.  */
+  unsigned can_be_parallel : 1;
+
+  /* True if -Waggressive-loop-optimizations warned about this loop
+     already.  */
+  unsigned warned_aggressive_loop_optimizations : 1;
+
   /* True if this loop should never be vectorized.  */
-  bool dont_vectorize;
+  unsigned dont_vectorize : 1;
 
   /* True if we should try harder to vectorize this loop.  */
-  bool force_vectorize;
+  unsigned force_vectorize : 1;
 
   /* True if the loop is part of an oacc kernels region.  */
-  bool in_oacc_kernels_region;
+  unsigned in_oacc_kernels_region : 1;
 
   /* For SIMD loops, this is a unique identifier of the loop, referenced
      by IFN_GOMP_SIMD_VF, IFN_GOMP_SIMD_LANE and IFN_GOMP_SIMD_LAST_LANE
index 2f74b12c3a546902ae852d8f70085ec2cd8bd402..6a968d1978832c25cda2a0726203f73c9ed37741 100644 (file)
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -4154,10 +4154,10 @@ struct set
      The size of this field should match the size of the mode
      field of struct rtx_def (see rtl.h).  */
   ENUM_BITFIELD(machine_mode) mode : 8;
-  /* A constant equivalent for SET_SRC, if any.  */
-  rtx src_const;
   /* Hash value of constant equivalent for SET_SRC.  */
   unsigned src_const_hash;
+  /* A constant equivalent for SET_SRC, if any.  */
+  rtx src_const;
   /* Table entry for constant equivalent for SET_SRC, if any.  */
   struct table_elt *src_const_elt;
   /* Table entry for the destination address.  */
index 98a4f11d9bfb5ddb6ec49a4a08639690a91779da..959e31a68e6b878c481b97241e05a8b644bf3cc1 100644 (file)
@@ -58,8 +58,8 @@ ipa_print_order (FILE* out,
 
 struct searchc_env {
   struct cgraph_node **stack;
-  int stack_size;
   struct cgraph_node **result;
+  int stack_size;
   int order_pos;
   splay_tree nodes_marked_new;
   bool reduce;
index e2367a817c1a2cfbf647782537b2f1da7a65279c..8292cea3e521e1bd0f4fe397cb393b2ba062766f 100644 (file)
@@ -108,14 +108,14 @@ struct invariant
   /* The number of invariants which eqto this.  */
   unsigned eqno;
 
-  /* If we moved the invariant out of the loop, the register that contains its
-     value.  */
-  rtx reg;
-
   /* If we moved the invariant out of the loop, the original regno
      that contained its value.  */
   int orig_regno;
 
+  /* If we moved the invariant out of the loop, the register that contains its
+     value.  */
+  rtx reg;
+
   /* The definition of the invariant.  */
   struct def *def;
 
@@ -134,12 +134,12 @@ struct invariant
   /* Cost of the invariant.  */
   unsigned cost;
 
-  /* The invariants it depends on.  */
-  bitmap depends_on;
-
   /* Used for detecting already visited invariants during determining
      costs of movements.  */
   unsigned stamp;
+
+  /* The invariants it depends on.  */
+  bitmap depends_on;
 };
 
 /* Currently processed loop.  */
index cfffe624ec57e0f3c8642db007e6deeeb7069bc8..5a15075e7aa8581cc59604d170cf84c5963467bd 100644 (file)
@@ -94,10 +94,10 @@ struct cand
 {
   /* Index of the candidates in all_cands. */
   int index;
-  /* The candidate insn.  */
-  rtx_insn *insn;
   /* Insn pseudo regno for rematerialization.  */
   int regno;
+  /* The candidate insn.  */
+  rtx_insn *insn;
   /* Non-negative if a reload pseudo is in the insn instead of the
      pseudo for rematerialization.  */
   int reload_regno;
index a2e2d893632cfc27017a883f50c2a1d5a80e7c68..63cdc237240b9f354b8c7ba9a6161baa6065e18b 100644 (file)
@@ -182,9 +182,9 @@ struct change_t
 {
   rtx object;
   int old_code;
+  bool unshare;
   rtx *loc;
   rtx old;
-  bool unshare;
 };
 
 static change_t *changes;
index 638dfc8b1cb665f78919deaac486e433fb115d09..93330425c00f26b19e30076cf91382418f9c49c2 100644 (file)
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -2021,6 +2021,9 @@ struct address_info {
   /* The address space.  */
   addr_space_t as;
 
+  /* True if this is an RTX_AUTOINC address.  */
+  bool autoinc_p;
+
   /* A pointer to the top-level address.  */
   rtx *outer;
 
@@ -2076,9 +2079,6 @@ struct address_info {
 
   /* If BASE is nonnull, this is the code of the rtx that contains it.  */
   enum rtx_code base_outer_code;
-
-  /* True if this is an RTX_AUTOINC address.  */
-  bool autoinc_p;
 };
 
 /* This is used to bundle an rtx and a mode together so that the pair
index 3bcd14522c8e59a25fe9b7ac40c128ac5021fc93..d0246f4246715ec590a48b2bec151811ede83040 100644 (file)
@@ -37,7 +37,7 @@ class GTY((user)) function_summary <T *>
 public:
   /* Default construction takes SYMTAB as an argument.  */
   function_summary (symbol_table *symtab, bool ggc = false): m_ggc (ggc),
-    m_map (13, ggc), m_insertion_enabled (true), m_released (false),
+    m_insertion_enabled (true), m_released (false), m_map (13, ggc),
     m_symtab (symtab)
   {
     m_symtab_insertion_hook =
@@ -205,6 +205,10 @@ private:
     return *v;
   }
 
+  /* Indicates if insertion hook is enabled.  */
+  bool m_insertion_enabled;
+  /* Indicates if the summary is released.  */
+  bool m_released;
   /* Main summary store, where summary ID is used as key.  */
   hash_map <map_hash, T *> m_map;
   /* Internal summary insertion hook pointer.  */
@@ -213,10 +217,6 @@ private:
   cgraph_node_hook_list *m_symtab_removal_hook;
   /* Internal summary duplication hook pointer.  */
   cgraph_2node_hook_list *m_symtab_duplication_hook;
-  /* Indicates if insertion hook is enabled.  */
-  bool m_insertion_enabled;
-  /* Indicates if the summary is released.  */
-  bool m_released;
   /* Symbol table the summary is registered to.  */
   symbol_table *m_symtab;
 
index 4b94d0f9f8a52b5229b79c9414e8275f3064664f..1b9950eca8ee9ffebe91da58c2529abb09c9f5c5 100644 (file)
@@ -474,12 +474,12 @@ struct partition
   bitmap stmts;
   bitmap loops;
   bool reduction_p;
+  bool plus_one;
   enum partition_kind kind;
   /* data-references a kind != PKIND_NORMAL partition is about.  */
   data_reference_p main_dr;
   data_reference_p secondary_dr;
   tree niter;
-  bool plus_one;
 };
 
 
index eb08b33316c3dc965748eb0ee4db0dac88a6f39c..197847796eb72d94f503da909cc7c2e252b5aee3 100644 (file)
@@ -36,9 +36,9 @@ along with GCC; see the file COPYING3.  If not see
 struct object_size_info
 {
   int object_size_type;
-  bitmap visited, reexamine;
-  int pass;
+  unsigned char pass;
   bool changed;
+  bitmap visited, reexamine;
   unsigned int *depths;
   unsigned int *stack, *tos;
 };
index f3ad3736698589a8b98262a19026ecb583d1c752..8dc658812f248178c45cd1b4e270401a7e2caead 100644 (file)
@@ -346,12 +346,12 @@ struct cost_pair
 {
   struct iv_cand *cand;        /* The candidate.  */
   comp_cost cost;      /* The cost.  */
+  enum tree_code comp; /* For iv elimination, the comparison.  */
   bitmap depends_on;   /* The list of invariants that have to be
                           preserved.  */
   tree value;          /* For final value elimination, the expression for
                           the final value of the iv.  For iv elimination,
                           the new bound to compare with.  */
-  enum tree_code comp; /* For iv elimination, the comparison.  */
   iv_inv_expr_ent *inv_expr; /* Loop invariant expression.  */
 };
 
index 8e08ae29e03d33e7d9c3dbb9853d51e5049dfcb0..e30ddd821ed6fa864a058278326f5f9d01d906ff 100644 (file)
@@ -235,12 +235,12 @@ struct ssa_local_info_t
      and sharing a template for that block is considerably more difficult.  */
   basic_block template_block;
 
-  /* TRUE if we thread one or more jumps, FALSE otherwise.  */
-  bool jumps_threaded;
-
   /* Blocks duplicated for the thread.  */
   bitmap duplicate_blocks;
 
+  /* TRUE if we thread one or more jumps, FALSE otherwise.  */
+  bool jumps_threaded;
+
   /* When we have multiple paths through a joiner which reach different
      final destinations, then we may need to correct for potential
      profile insanities.  */
index 33a32b818e90f90a8ff1ca066fd0cfdff6c85f70..29164d1b53b7d415591f7f6447b52ae9c9d7f491 100644 (file)
@@ -1137,8 +1137,8 @@ vect_get_data_access_cost (struct data_reference *dr,
 
 typedef struct _vect_peel_info
 {
-  int npeel;
   struct data_reference *dr;
+  int npeel;
   unsigned int count;
 } *vect_peel_info;
 
index 1300c6a173d52c5f732c816bc80cca9353f6ff06..e254aa0e49f2d8cd05213dbba9d52c83808803b6 100644 (file)
@@ -129,8 +129,8 @@ typedef struct _slp_oprnd_info
   /* Information about the first statement, its vector def-type, type, the
      operand itself in case it's constant, and an indication if it's a pattern
      stmt.  */
-  enum vect_def_type first_dt;
   tree first_op_type;
+  enum vect_def_type first_dt;
   bool first_pattern;
   bool second_pattern;
 } *slp_oprnd_info;
index d74508c0b324ea2bb8bed12cb63f061e663db8d9..bfb7185f5e0eb7333e1a6cb74e2f5eb95b5f4f8e 100644 (file)
@@ -3074,8 +3074,8 @@ struct simd_call_arg_info
 {
   tree vectype;
   tree op;
-  enum vect_def_type dt;
   HOST_WIDE_INT linear_step;
+  enum vect_def_type dt;
   unsigned int align;
   bool simd_lane_linear;
 };
index ba6d940f2b4976b4bf14d3b078a2da60f6897871..12bb904abee5c0811576ad808bee451c6463a7fd 100644 (file)
@@ -240,9 +240,6 @@ typedef struct _loop_vec_info : public vec_info {
      PARAM_MIN_VECT_LOOP_BOUND.  */
   unsigned int th;
 
-  /* Is the loop vectorizable? */
-  bool vectorizable;
-
   /* Unrolling factor  */
   int vectorization_factor;
 
@@ -277,10 +274,6 @@ typedef struct _loop_vec_info : public vec_info {
      runtime (loop versioning) misalignment check.  */
   vec<gimple *> may_misalign_stmts;
 
-  /* The unrolling factor needed to SLP the loop. In case of that pure SLP is
-     applied to the loop, i.e., no unrolling is needed, this is 1.  */
-  unsigned slp_unrolling_factor;
-
   /* Reduction cycles detected in the loop. Used in loop-aware SLP.  */
   vec<gimple *> reductions;
 
@@ -291,9 +284,16 @@ typedef struct _loop_vec_info : public vec_info {
   /* Cost vector for a single scalar iteration.  */
   vec<stmt_info_for_cost> scalar_cost_vec;
 
+  /* The unrolling factor needed to SLP the loop. In case of that pure SLP is
+     applied to the loop, i.e., no unrolling is needed, this is 1.  */
+  unsigned slp_unrolling_factor;
+
   /* Cost of a single scalar iteration.  */
   int single_scalar_iteration_cost;
 
+  /* Is the loop vectorizable? */
+  bool vectorizable;
+
   /* When we have grouped data accesses with gaps, we may introduce invalid
      memory accesses.  We peel the last iteration of the loop to prevent
      this.  */
@@ -328,13 +328,13 @@ typedef struct _loop_vec_info : public vec_info {
      vectorize this, so this field would be false.  */
   bool no_data_dependencies;
 
+  /* Mark loops having masked stores.  */
+  bool has_mask_store;
+
   /* If if-conversion versioned this loop before conversion, this is the
      loop version without if-conversion.  */
   struct loop *scalar_loop;
 
-  /* Mark loops having masked stores.  */
-  bool has_mask_store;
-
   /* For loops being epilogues of already vectorized loops
      this points to the original vectorized loop.  Otherwise NULL.  */
   _loop_vec_info *orig_loop_info;
@@ -555,6 +555,10 @@ typedef struct _stmt_vec_info {
   /* Stmt is part of some pattern (computation idiom)  */
   bool in_pattern_p;
 
+  /* Is this statement vectorizable or should it be skipped in (partial)
+     vectorization.  */
+  bool vectorizable;
+
   /* The stmt to which this info struct refers to.  */
   gimple *stmt;
 
@@ -648,23 +652,19 @@ typedef struct _stmt_vec_info {
      indicates whether the stmt needs to be vectorized.  */
   enum vect_relevant relevant;
 
-  /* Is this statement vectorizable or should it be skipped in (partial)
-     vectorization.  */
-  bool vectorizable;
-
   /* For loads if this is a gather, for stores if this is a scatter.  */
   bool gather_scatter_p;
 
   /* True if this is an access with loop-invariant stride.  */
   bool strided_p;
 
+  /* For both loads and stores.  */
+  bool simd_lane_access_p;
+
   /* Classifies how the load or store is going to be implemented
      for loop vectorization.  */
   vect_memory_access_type memory_access_type;
 
-  /* For both loads and stores.  */
-  bool simd_lane_access_p;
-
   /* For reduction loops, this is the type of reduction.  */
   enum vect_reduction_type v_reduc_type;