aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-sccvn.c
diff options
context:
space:
mode:
authorThomas Preud'homme <thomas.preudhomme@arm.com>2015-02-04 08:22:45 +0000
committerThomas Preud'homme <thopre01@gcc.gnu.org>2015-02-04 08:22:45 +0000
commitcc9ef6a6419a8c343a5f0d233405411e8c5ca4cc (patch)
treee96e1033253fd235a5ba2291f141bd766024c589 /gcc/tree-ssa-sccvn.c
parent6a5fd0f8c1ecdae5c74fd058c524efdc44f87b80 (diff)
downloadgcc-cc9ef6a6419a8c343a5f0d233405411e8c5ca4cc.zip
gcc-cc9ef6a6419a8c343a5f0d233405411e8c5ca4cc.tar.gz
gcc-cc9ef6a6419a8c343a5f0d233405411e8c5ca4cc.tar.bz2
re PR middle-end/62103 (Incorrect folding of bitfield in a union on big endian targets)
2015-02-04 Thomas Preud'homme <thomas.preudhomme@arm.com> gcc/ PR middle-end/62103 * tree-ssa-sccvn.c (fully_constant_vn_reference_p): Use TYPE_PRECISION to compute size of referenced value in the constant case. gcc/testsuite/ PR middle-end/62103 * gcc.c-torture/execute/bitfld-7.c: New test adapted from bitfld-6.c to use 24 bits for bitfield b. From-SVN: r220390
Diffstat (limited to 'gcc/tree-ssa-sccvn.c')
-rw-r--r--gcc/tree-ssa-sccvn.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index 25c67d0..0f1299a 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -1352,7 +1352,7 @@ fully_constant_vn_reference_p (vn_reference_t ref)
|| TYPE_PRECISION (ref->type) % BITS_PER_UNIT == 0))
{
HOST_WIDE_INT off = 0;
- HOST_WIDE_INT size = tree_to_shwi (TYPE_SIZE (ref->type));
+ HOST_WIDE_INT size = TYPE_PRECISION (ref->type);
if (size % BITS_PER_UNIT != 0
|| size > MAX_BITSIZE_MODE_ANY_MODE)
return NULL_TREE;