+2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
+
+ * tree-vectorizer.h (stmt_vec_info): Turn back into a typedef.
+ (NULL_STMT_VEC_INFO): Delete.
+ (stmt_vec_info::operator*): Likewise.
+ (stmt_vec_info::operator gimple *): Likewise.
+ * tree-vect-loop.c (vectorizable_reduction): Use NULL instead
+ of NULL_STMT_VEC_INFO.
+ * tree-vect-patterns.c (vect_init_pattern_stmt): Likewise.
+ (vect_reassociating_reduction_p): Likewise.
+ * tree-vect-stmts.c (vect_build_gather_load_calls): Likewise.
+ (vectorizable_store): Likewise.
+ * tree-vectorizer.c (vec_info::set_vinfo_for_stmt): Likewise.
+ (vec_info::free_stmt_vec_infos): Likewise.
+
2018-07-31 Richard Sandiford <richard.sandiford@arm.com>
* tree-vectorizer.h (vect_stmt_in_region_p): Delete.
if (slp_node)
neutral_op = neutral_op_for_slp_reduction
(slp_node_instance->reduc_phis, code,
- REDUC_GROUP_FIRST_ELEMENT (stmt_info) != NULL_STMT_VEC_INFO);
+ REDUC_GROUP_FIRST_ELEMENT (stmt_info) != NULL);
if (double_reduc && reduction_type == FOLD_LEFT_REDUCTION)
{
{
vec_info *vinfo = orig_stmt_info->vinfo;
stmt_vec_info pattern_stmt_info = vinfo->lookup_stmt (pattern_stmt);
- if (pattern_stmt_info == NULL_STMT_VEC_INFO)
+ if (pattern_stmt_info == NULL)
pattern_stmt_info = orig_stmt_info->vinfo->add_stmt (pattern_stmt);
gimple_set_bb (pattern_stmt, gimple_bb (orig_stmt_info->stmt));
{
return (STMT_VINFO_DEF_TYPE (stmt_vinfo) == vect_reduction_def
? STMT_VINFO_REDUC_TYPE (stmt_vinfo) != FOLD_LEFT_REDUCTION
- : REDUC_GROUP_FIRST_ELEMENT (stmt_vinfo) != NULL_STMT_VEC_INFO);
+ : REDUC_GROUP_FIRST_ELEMENT (stmt_vinfo) != NULL);
}
/* As above, but also require it to have code CODE and to be a reduction
new_stmt_info = loop_vinfo->lookup_def (var);
}
- if (prev_stmt_info == NULL_STMT_VEC_INFO)
+ if (prev_stmt_info == NULL)
STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
stmt_vec_info new_stmt_info
= vect_finish_stmt_generation (stmt_info, new_stmt, gsi);
- if (prev_stmt_info == NULL_STMT_VEC_INFO)
+ if (prev_stmt_info == NULL)
STMT_VINFO_VEC_STMT (stmt_info) = *vec_stmt = new_stmt_info;
else
STMT_VINFO_RELATED_STMT (prev_stmt_info) = new_stmt_info;
}
else
{
- gcc_checking_assert (info == NULL_STMT_VEC_INFO);
+ gcc_checking_assert (info == NULL);
stmt_vec_infos[uid - 1] = info;
}
}
unsigned int i;
stmt_vec_info info;
FOR_EACH_VEC_ELT (stmt_vec_infos, i, info)
- if (info != NULL_STMT_VEC_INFO)
+ if (info != NULL)
free_stmt_vec_info (info);
stmt_vec_infos.release ();
}
#ifndef GCC_TREE_VECTORIZER_H
#define GCC_TREE_VECTORIZER_H
-class stmt_vec_info {
-public:
- stmt_vec_info () {}
- stmt_vec_info (struct _stmt_vec_info *ptr) : m_ptr (ptr) {}
- struct _stmt_vec_info *operator-> () const { return m_ptr; }
- struct _stmt_vec_info &operator* () const;
- operator struct _stmt_vec_info * () const { return m_ptr; }
- operator gimple * () const;
- operator void * () const { return m_ptr; }
- operator bool () const { return m_ptr; }
- bool operator == (const stmt_vec_info &x) { return x.m_ptr == m_ptr; }
- bool operator == (_stmt_vec_info *x) { return x == m_ptr; }
- bool operator != (const stmt_vec_info &x) { return x.m_ptr != m_ptr; }
- bool operator != (_stmt_vec_info *x) { return x != m_ptr; }
-
-private:
- struct _stmt_vec_info *m_ptr;
-};
-
-#define NULL_STMT_VEC_INFO (stmt_vec_info (NULL))
+typedef struct _stmt_vec_info *stmt_vec_info;
#include "tree-data-ref.h"
#include "tree-hash-traits.h"
&& TYPE_PRECISION (TYPE) == 1 \
&& TYPE_UNSIGNED (TYPE)))
-inline _stmt_vec_info &
-stmt_vec_info::operator* () const
-{
- return *m_ptr;
-}
-
-inline stmt_vec_info::operator gimple * () const
-{
- return m_ptr ? m_ptr->stmt : NULL;
-}
-
static inline bool
nested_in_vect_loop_p (struct loop *loop, stmt_vec_info stmt_info)
{