aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vectorizer.h
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2018-07-03 09:58:47 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2018-07-03 09:58:47 +0000
commit3239dde94019f11e6c1a8c6ae2b3f7d944689148 (patch)
treeb00ef9e296556f69df3860647357ec75f32198ae /gcc/tree-vectorizer.h
parent30f502eddecac8ecfbec4b86f3a80f1859076b6d (diff)
downloadgcc-3239dde94019f11e6c1a8c6ae2b3f7d944689148.zip
gcc-3239dde94019f11e6c1a8c6ae2b3f7d944689148.tar.gz
gcc-3239dde94019f11e6c1a8c6ae2b3f7d944689148.tar.bz2
Avoid matching the same pattern statement twice
r262275 allowed pattern matching on pattern statements. Testing for SVE on more benchmarks showed a case where this interacted badly with 14/n. The new over-widening detection could narrow a COND_EXPR A to another COND_EXPR B, which mixed_size_cond could then match. This was working as expected. However, we left B (now dead) in the pattern definition sequence with a non-null PATTERN_DEF_SEQ. mask_conversion also matched B, and unlike most recognisers, didn't clear PATTERN_DEF_SEQ before adding statements to it. This meant that the statements created by mixed_size_cond appeared in two supposedy separate sequences, causing much confusion. This patch removes pattern statements that are replaced by further pattern statements. As a belt-and-braces fix, it also nullifies PATTERN_DEF_SEQ on failure, in the same way Richard B. did recently for RELATED_STMT. I have patches to clean up the PATTERN_DEF_SEQ handling, but they only apply after the complete PR85694 sequence, whereas this needs to go in before 14/n. 2018-07-03 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-patterns.c (vect_mark_pattern_stmts): Remove pattern statements that have been replaced by further pattern statements. (vect_pattern_recog_1): Clear STMT_VINFO_PATTERN_DEF_SEQ on failure. gcc/testsuite/ * gcc.dg/vect/vect-mixed-size-cond-1.c: New test. From-SVN: r262332
Diffstat (limited to 'gcc/tree-vectorizer.h')
0 files changed, 0 insertions, 0 deletions