diff options
author | Dorit Nuzman <dorit@il.ibm.com> | 2007-09-15 18:24:23 +0000 |
---|---|---|
committer | Dorit Nuzman <dorit@gcc.gnu.org> | 2007-09-15 18:24:23 +0000 |
commit | 4934454bed73a1a770ae7d4cf9b16df9c8c7a720 (patch) | |
tree | fdfb5ac34e4835967e8b7112ee680cce9fbb38c4 /gcc/tree-vect-transform.c | |
parent | 8a0c568f7df0c9a9d48e437486b60c6daa53ead3 (diff) | |
download | gcc-4934454bed73a1a770ae7d4cf9b16df9c8c7a720.zip gcc-4934454bed73a1a770ae7d4cf9b16df9c8c7a720.tar.gz gcc-4934454bed73a1a770ae7d4cf9b16df9c8c7a720.tar.bz2 |
tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if the VEC is not NULL.
* tree-vect-transform.c (vect_get_vec_defs_for_stmt_copy): check if
the VEC is not NULL.
(vectorizable_type_demotion, vectorizable_type_promotion): Check that
get_vectype_for_scalar_type succeeded.
(vectorizable_conversion): Likewise.
From-SVN: r128514
Diffstat (limited to 'gcc/tree-vect-transform.c')
-rw-r--r-- | gcc/tree-vect-transform.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/gcc/tree-vect-transform.c b/gcc/tree-vect-transform.c index 5331fcd..df4bd08 100644 --- a/gcc/tree-vect-transform.c +++ b/gcc/tree-vect-transform.c @@ -1938,7 +1938,7 @@ vect_get_vec_defs_for_stmt_copy (enum vect_def_type *dt, vec_oprnd = vect_get_vec_def_for_stmt_copy (dt[0], vec_oprnd); VEC_quick_push (tree, *vec_oprnds0, vec_oprnd); - if (vec_oprnds1) + if (vec_oprnds1 && *vec_oprnds1) { vec_oprnd = VEC_pop (tree, *vec_oprnds1); vec_oprnd = vect_get_vec_def_for_stmt_copy (dt[1], vec_oprnd); @@ -3309,11 +3309,15 @@ vectorizable_conversion (tree stmt, block_stmt_iterator *bsi, op0 = TREE_OPERAND (operation, 0); rhs_type = TREE_TYPE (op0); vectype_in = get_vectype_for_scalar_type (rhs_type); + if (!vectype_in) + return false; nunits_in = TYPE_VECTOR_SUBPARTS (vectype_in); scalar_dest = GIMPLE_STMT_OPERAND (stmt, 0); lhs_type = TREE_TYPE (scalar_dest); vectype_out = get_vectype_for_scalar_type (lhs_type); + if (!vectype_out) + return false; nunits_out = TYPE_VECTOR_SUBPARTS (vectype_out); /* FORNOW */ @@ -4083,10 +4087,14 @@ vectorizable_type_demotion (tree stmt, block_stmt_iterator *bsi, op0 = TREE_OPERAND (operation, 0); vectype_in = get_vectype_for_scalar_type (TREE_TYPE (op0)); + if (!vectype_in) + return false; nunits_in = TYPE_VECTOR_SUBPARTS (vectype_in); scalar_dest = GIMPLE_STMT_OPERAND (stmt, 0); vectype_out = get_vectype_for_scalar_type (TREE_TYPE (scalar_dest)); + if (!vectype_out) + return false; nunits_out = TYPE_VECTOR_SUBPARTS (vectype_out); if (nunits_in != nunits_out / 2) /* FORNOW */ return false; @@ -4241,10 +4249,14 @@ vectorizable_type_promotion (tree stmt, block_stmt_iterator *bsi, op0 = TREE_OPERAND (operation, 0); vectype_in = get_vectype_for_scalar_type (TREE_TYPE (op0)); + if (!vectype_in) + return false; nunits_in = TYPE_VECTOR_SUBPARTS (vectype_in); scalar_dest = GIMPLE_STMT_OPERAND (stmt, 0); vectype_out = get_vectype_for_scalar_type (TREE_TYPE (scalar_dest)); + if (!vectype_out) + return false; nunits_out = TYPE_VECTOR_SUBPARTS (vectype_out); if (nunits_out != nunits_in / 2) /* FORNOW */ return false; |