diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-11-27 12:03:12 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-11-27 12:03:12 +0100 |
commit | 6c9e85fb8b2fffbdac9c3170c98497d6d1bdc26b (patch) | |
tree | cf46507fed79cd2730c0fc10c373d2631ae276b2 /gcc/tree-vectorizer.h | |
parent | a7c7534348a4f6af27f5d17b83356619ad26f73c (diff) | |
download | gcc-6c9e85fb8b2fffbdac9c3170c98497d6d1bdc26b.zip gcc-6c9e85fb8b2fffbdac9c3170c98497d6d1bdc26b.tar.gz gcc-6c9e85fb8b2fffbdac9c3170c98497d6d1bdc26b.tar.bz2 |
re PR tree-optimization/64024 (gcc.dg/vect/vect-simd-clone-6.c ICEs)
PR tree-optimization/64024
* tree-vectorizer.h (struct _stmt_vec_info): Remove simd_clone_fndecl
field. Add simd_clone_info field.
(STMT_VINFO_SIMD_CLONE_FNDECL): Remove.
(STMT_VINFO_SIMD_CLONE_INFO): Define.
* tree-vect-stmts.c (vectorizable_simd_clone_call): Adjust for
STMT_VINFO_SIMD_CLONE_FNDECL becoming first element of
STMT_VINFO_SIMD_CLONE_INFO vector. For linear arguments, remember
base and linear_step from analysis phase and use it during transform
phase, biased by the difference between LOOP_VINFO_NITERS{_UNCHANGED,}
multiplied by linear_step.
(free_stmt_vec_info): Release STMT_VINFO_SIMD_CLONE_INFO.
* gcc.dg/vect/vect-simd-clone-13.c: New test.
* gcc.dg/vect/vect-simd-clone-14.c: New test.
From-SVN: r218120
Diffstat (limited to 'gcc/tree-vectorizer.h')
-rw-r--r-- | gcc/tree-vectorizer.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/tree-vectorizer.h b/gcc/tree-vectorizer.h index 3f9b78c..c37eb20 100644 --- a/gcc/tree-vectorizer.h +++ b/gcc/tree-vectorizer.h @@ -602,8 +602,10 @@ typedef struct _stmt_vec_info { of this stmt. */ vec<dr_p> same_align_refs; - /* Selected SIMD clone's function decl. */ - tree simd_clone_fndecl; + /* Selected SIMD clone's function info. First vector element + is SIMD clone's function decl, followed by a pair of trees (base + step) + for linear arguments (pair of NULLs for other arguments). */ + vec<tree> simd_clone_info; /* Classify the def of this stmt. */ enum vect_def_type def_type; @@ -677,7 +679,7 @@ typedef struct _stmt_vec_info { #define STMT_VINFO_RELATED_STMT(S) (S)->related_stmt #define STMT_VINFO_PATTERN_DEF_SEQ(S) (S)->pattern_def_seq #define STMT_VINFO_SAME_ALIGN_REFS(S) (S)->same_align_refs -#define STMT_VINFO_SIMD_CLONE_FNDECL(S) (S)->simd_clone_fndecl +#define STMT_VINFO_SIMD_CLONE_INFO(S) (S)->simd_clone_info #define STMT_VINFO_DEF_TYPE(S) (S)->def_type #define STMT_VINFO_GROUP_FIRST_ELEMENT(S) (S)->first_element #define STMT_VINFO_GROUP_NEXT_ELEMENT(S) (S)->next_element |