aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-forwprop.c
diff options
context:
space:
mode:
authorZdenek Sojka <zsojka@seznam.cz>2016-04-05 18:58:50 +0200
committerJakub Jelinek <jakub@gcc.gnu.org>2016-04-05 18:58:50 +0200
commit5e8c2eb17e0eb237fe89458caadcb935fb9e20ff (patch)
tree901ac968cac4e3136dab48d308c51cda3f90056b /gcc/tree-ssa-forwprop.c
parentc0daf32d0cd8c1ddac7f347058ea42caf15afd96 (diff)
downloadgcc-5e8c2eb17e0eb237fe89458caadcb935fb9e20ff.zip
gcc-5e8c2eb17e0eb237fe89458caadcb935fb9e20ff.tar.gz
gcc-5e8c2eb17e0eb237fe89458caadcb935fb9e20ff.tar.bz2
re PR tree-optimization/70509 (wrong code with extract from a v64qi)
PR tree-optimization/70509 * tree-ssa-forwprop.c (simplify_bitfield_ref): Use bitsize_int instead of the vector base type for index. * gcc.target/i386/avx512bw-pr70509.c: New test. From-SVN: r234754
Diffstat (limited to 'gcc/tree-ssa-forwprop.c')
-rw-r--r--gcc/tree-ssa-forwprop.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index f64ee0a..c40f9e2 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -1773,7 +1773,7 @@ simplify_bitfield_ref (gimple_stmt_iterator *gsi)
if (code == VEC_PERM_EXPR)
{
- tree p, m, index, tem;
+ tree p, m, tem;
unsigned nelts;
m = gimple_assign_rhs3 (def_stmt);
if (TREE_CODE (m) != VECTOR_CST)
@@ -1790,9 +1790,8 @@ simplify_bitfield_ref (gimple_stmt_iterator *gsi)
p = gimple_assign_rhs2 (def_stmt);
idx -= nelts;
}
- index = build_int_cst (TREE_TYPE (TREE_TYPE (m)), idx * size);
tem = build3 (BIT_FIELD_REF, TREE_TYPE (op),
- unshare_expr (p), op1, index);
+ unshare_expr (p), op1, bitsize_int (idx * size));
gimple_assign_set_rhs1 (stmt, tem);
fold_stmt (gsi);
update_stmt (gsi_stmt (*gsi));