summaryrefslogtreecommitdiff
path: root/gcc/tree-sra.c
diff options
context:
space:
mode:
authorjiez <jiez@138bc75d-0d04-0410-961f-82ee72b054a4>2010-08-05 03:05:35 +0000
committerjiez <jiez@138bc75d-0d04-0410-961f-82ee72b054a4>2010-08-05 03:05:35 +0000
commit232c0d1d398195640be466c1c8192a1a4bbcde4c (patch)
tree9e187d4ca7b2b2e716a05a1076c35b48a73d25c3 /gcc/tree-sra.c
parenteea8384a6370d30289e54abe9024972494ba9356 (diff)
downloadgcc-232c0d1d398195640be466c1c8192a1a4bbcde4c.tar.gz
PR tree-optimization/45144
* tree-sra.c (type_consists_of_records_p): Return false if the record contains bit-field. testsuite/ PR tree-optimization/45144 * gcc.dg/tree-ssa/pr45144.c: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@162897 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r--gcc/tree-sra.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index 372139f5949..d32bbebc0f2 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -811,7 +811,7 @@ create_access (tree expr, gimple stmt, bool write)
/* Return true iff TYPE is a RECORD_TYPE with fields that are either of gimple
register types or (recursively) records with only these two kinds of fields.
It also returns false if any of these records has a zero-size field as its
- last field. */
+ last field or has a bit-field. */
static bool
type_consists_of_records_p (tree type)
@@ -827,6 +827,9 @@ type_consists_of_records_p (tree type)
{
tree ft = TREE_TYPE (fld);
+ if (DECL_BIT_FIELD (fld))
+ return false;
+
if (!is_gimple_reg_type (ft)
&& !type_consists_of_records_p (ft))
return false;