I discovered the vectorizable_operation while trying to figure out why
ia64 wasn't generating the mul_highpart pattern as I expected: we always
force CODE_FOR_nothing to 0. Oops.
The change to expr.c was just to satisfy the grep I did to make sure
there were not other occurrences of a similar problem.
r~
* expr.c (store_constructor): Initialize icode with CODE_FOR_nothing.
* tree-vect-stmts.c (vectorizable_operation): Use LAST_INSN_CODE for
dummy != CODE_FOR_nothing value.
---
gcc/ChangeLog | 6 ++++++
gcc/expr.c | 2 +-
gcc/tree-vect-stmts.c | 2 +-
3 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/gcc/expr.c b/gcc/expr.c
index 5aec53e..9650863 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -6130,7 +6130,7 @@ store_constructor (tree exp, rtx target, int cleared,
HOST_WIDE_INT size)
constructor_elt *ce;
int i;
int need_to_clear;
- int icode = 0;
+ int icode = CODE_FOR_nothing;
tree elttype = TREE_TYPE (type);
int elt_size = tree_low_cst (TYPE_SIZE (elttype), 1);
enum machine_mode eltmode = TYPE_MODE (elttype);
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index fb05063..bb42cbc 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -3531,7 +3531,7 @@ vectorizable_operation (gimple stmt, gimple_stmt_iterator
*gsi,
if (code == MULT_HIGHPART_EXPR)
{
if (can_mult_highpart_p (vec_mode, TYPE_UNSIGNED (vectype)))
- icode = 0;
+ icode = LAST_INSN_CODE;
else
icode = CODE_FOR_nothing;
}