aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2013-06-12 15:01:49 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2013-06-12 15:01:49 +0200
commitbfdeda2cc6478b97c7fb6a1c2cc8dbbb516becae (patch)
tree17c4b3fcf0d4e67e0233dacdc50b8851be77bfcc
parenta4fa02d1b707a31c6d5e5508a9f2c7f0abdbb5ea (diff)
downloadgcc-bfdeda2cc6478b97c7fb6a1c2cc8dbbb516becae.zip
gcc-bfdeda2cc6478b97c7fb6a1c2cc8dbbb516becae.tar.gz
gcc-bfdeda2cc6478b97c7fb6a1c2cc8dbbb516becae.tar.bz2
re PR tree-optimization/57537 (gcc.dg/vect/slp-widen-mult-half.c generating wrong code on PowerPC64)
PR tree-optimization/57537 * tree-vect-patterns.c (vect_recog_widen_mult_pattern): If vect_handle_widen_op_by_const, convert oprnd1 to half_type1. From-SVN: r200000
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-vect-patterns.c5
2 files changed, 10 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 25d746a..5eb9606 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2013-06-12 Jakub Jelinek <jakub@redhat.com>
+
+ PR tree-optimization/57537
+ * tree-vect-patterns.c (vect_recog_widen_mult_pattern): If
+ vect_handle_widen_op_by_const, convert oprnd1 to half_type1.
+
2013-06-12 Richard Biener <rguenther@suse.de>
* data-streamer.h (streamer_write_char_stream): CSE
diff --git a/gcc/tree-vect-patterns.c b/gcc/tree-vect-patterns.c
index 648385a..0a48727 100644
--- a/gcc/tree-vect-patterns.c
+++ b/gcc/tree-vect-patterns.c
@@ -640,7 +640,10 @@ vect_recog_widen_mult_pattern (vec<gimple> *stmts,
&& vect_handle_widen_op_by_const (last_stmt, MULT_EXPR, oprnd1,
&oprnd0, stmts, type,
&half_type0, def_stmt0))
- half_type1 = half_type0;
+ {
+ half_type1 = half_type0;
+ oprnd1 = fold_convert (half_type1, oprnd1);
+ }
else
return NULL;
}