diff options
author | jiez <jiez@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-08-05 03:05:35 +0000 |
---|---|---|
committer | jiez <jiez@138bc75d-0d04-0410-961f-82ee72b054a4> | 2010-08-05 03:05:35 +0000 |
commit | 232c0d1d398195640be466c1c8192a1a4bbcde4c (patch) | |
tree | 9e187d4ca7b2b2e716a05a1076c35b48a73d25c3 /gcc/tree-sra.c | |
parent | eea8384a6370d30289e54abe9024972494ba9356 (diff) | |
download | gcc-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.c | 5 |
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; |