diff options
author | Martin Liska <mliska@suse.cz> | 2019-09-26 09:40:09 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2019-09-26 07:40:09 +0000 |
commit | 704bc4bb36a0b091c42955608c47aee4d43faf8d (patch) | |
tree | d7f610c10ad1dc89da8a96170fdf799c484c5444 | |
parent | 835d50c66aa5bde2f354a6e63a2afa7d2f76a05a (diff) | |
download | gcc-704bc4bb36a0b091c42955608c47aee4d43faf8d.zip gcc-704bc4bb36a0b091c42955608c47aee4d43faf8d.tar.gz gcc-704bc4bb36a0b091c42955608c47aee4d43faf8d.tar.bz2 |
Add TODO_update_ssa for SLP BB vectorization (PR tree-optimization/91885).
2019-09-26 Martin Liska <mliska@suse.cz>
PR tree-optimization/91885
* tree-vectorizer.c (try_vectorize_loop_1):
Add TODO_update_ssa_only_virtuals similarly to what slp
pass does.
2019-09-26 Martin Liska <mliska@suse.cz>
PR tree-optimization/91885
* gcc.dg/pr91885.c: New test.
From-SVN: r276141
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr91885.c | 47 | ||||
-rw-r--r-- | gcc/tree-vectorizer.c | 2 |
4 files changed, 60 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8382571..f876c5b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2019-09-26 Martin Liska <mliska@suse.cz> + + PR tree-optimization/91885 + * tree-vectorizer.c (try_vectorize_loop_1): + Add TODO_update_ssa_only_virtuals similarly to what slp + pass does. + 2019-09-26 Richard Sandiford <richard.sandiford@arm.com> * config/aarch64/aarch64.c (aarch64_rtx_costs): Use diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8830baa..1f99dbd 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-09-26 Martin Liska <mliska@suse.cz> + + PR tree-optimization/91885 + * gcc.dg/pr91885.c: New test. + 2019-09-25 Marek Polacek <polacek@redhat.com> PR c++/91877 - ICE with converting member of packed struct. diff --git a/gcc/testsuite/gcc.dg/pr91885.c b/gcc/testsuite/gcc.dg/pr91885.c new file mode 100644 index 0000000..934e8d3 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr91885.c @@ -0,0 +1,47 @@ +/* { dg-do compile } */ +/* { dg-options "-O3 -fprofile-generate" } */ +/* { dg-require-profiling "-fprofile-generate" } */ + +typedef signed long int __int64_t; +typedef unsigned long int __uint64_t; +typedef __int64_t int64_t; +typedef __uint64_t uint64_t; +inline void +BLI_endian_switch_int64 (int64_t *val) +{ + uint64_t tval = *val; + *val = ((tval >> 56)) | ((tval << 40) & 0x00ff000000000000ll) + | ((tval << 24) & 0x0000ff0000000000ll) + | ((tval << 8) & 0x000000ff00000000ll) + | ((tval >> 8) & 0x00000000ff000000ll) + | ((tval >> 24) & 0x0000000000ff0000ll) + | ((tval >> 40) & 0x000000000000ff00ll) | ((tval << 56)); +} +typedef struct anim_index_entry +{ + unsigned long long seek_pos_dts; + unsigned long long pts; +} anim_index_entry; +extern struct anim_index_entry * +MEM_callocN (int); +struct anim_index +{ + int num_entries; + struct anim_index_entry *entries; +}; +struct anim_index * +IMB_indexer_open (const char *name) +{ + char header[13]; + struct anim_index *idx; + int i; + idx->entries = MEM_callocN (8); + if (((1 == 0) != (header[8] == 'V'))) + { + for (i = 0; i < idx->num_entries; i++) + { + BLI_endian_switch_int64 ((int64_t *) &idx->entries[i].seek_pos_dts); + BLI_endian_switch_int64 ((int64_t *) &idx->entries[i].pts); + } + } +} diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c index c3004f6..8fb70b7 100644 --- a/gcc/tree-vectorizer.c +++ b/gcc/tree-vectorizer.c @@ -943,7 +943,7 @@ try_vectorize_loop_1 (hash_table<simduid_to_vf> *&simduid_to_vf_htab, fold_loop_internal_call (loop_vectorized_call, boolean_true_node); loop_vectorized_call = NULL; - ret |= TODO_cleanup_cfg; + ret |= TODO_cleanup_cfg | TODO_update_ssa_only_virtuals; } } /* If outer loop vectorization fails for LOOP_VECTORIZED guarded |