aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authormarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>2019-09-26 07:40:09 +0000
committermarxin <marxin@138bc75d-0d04-0410-961f-82ee72b054a4>2019-09-26 07:40:09 +0000
commit7514a100bdfb9f51a09aa4e4d2efe2262785b0c3 (patch)
treed7f610c10ad1dc89da8a96170fdf799c484c5444 /gcc
parentdaca651f3e3547cdc67811ae037e1e303c06ba5e (diff)
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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@276141 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.dg/pr91885.c47
-rw-r--r--gcc/tree-vectorizer.c2
4 files changed, 60 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 838257145b3..f876c5b9ce0 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 8830baa3aba..1f99dbd1c8e 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 00000000000..934e8d3e6c3
--- /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 c3004f6f3a2..8fb70b751da 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