diff options
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 6c08979e8a6..933245038c8 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -191,6 +191,30 @@ typedef struct _vect_peel_extended_info stmt_vector_for_cost body_cost_vec; } *vect_peel_extended_info; + +/* Peeling hashtable helpers. */ + +struct peel_info_hasher : typed_free_remove <_vect_peel_info> +{ + typedef _vect_peel_info value_type; + typedef _vect_peel_info compare_type; + static inline hashval_t hash (const value_type *); + static inline bool equal (const value_type *, const compare_type *); +}; + +inline hashval_t +peel_info_hasher::hash (const value_type *peel_info) +{ + return (hashval_t) peel_info->npeel; +} + +inline bool +peel_info_hasher::equal (const value_type *a, const compare_type *b) +{ + return (a->npeel == b->npeel); +} + + /*-----------------------------------------------------------------*/ /* Info on vectorized loops. */ /*-----------------------------------------------------------------*/ @@ -275,7 +299,7 @@ typedef struct _loop_vec_info { vec<gimple> reduction_chains; /* Hash table used to choose the best peeling option. */ - htab_t peeling_htab; + hash_table <peel_info_hasher> peeling_htab; /* Cost data used by the target cost model. */ void *target_cost_data; |