diff options
author | Martin Jambor <mjambor@suse.cz> | 2010-11-10 13:52:27 +0100 |
---|---|---|
committer | Martin Jambor <jamborm@gcc.gnu.org> | 2010-11-10 13:52:27 +0100 |
commit | f5a7af7d1740aa9ab00bc3ce07099b0627485859 (patch) | |
tree | 6a13859190b80983b87e28b30fb5d6a3348396f1 /gcc/tree-sra.c | |
parent | 2be55a2540b291312898ad5500d20b7b64ba012c (diff) | |
download | gcc-f5a7af7d1740aa9ab00bc3ce07099b0627485859.zip gcc-f5a7af7d1740aa9ab00bc3ce07099b0627485859.tar.gz gcc-f5a7af7d1740aa9ab00bc3ce07099b0627485859.tar.bz2 |
re PR tree-optimization/46351 (incorrect scalarization (2))
2010-11-10 Martin Jambor <mjambor@suse.cz>
PR tree-optimization/46351
PR tree-optimization/46377
* tree-sra.c (type_internals_preclude_sra_p): Disqualify types with
aggregate bit-fields.
* testsuite/gnat.dg/opt10.adb: New file.
* testsuite/gnat.dg/opt10_pkg.ads: Likewise.
* testsuite/gnat.dg/opt11.adb: Likewise.
* testsuite/gnat.dg/opt11.ads: Likewise.
From-SVN: r166535
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r-- | gcc/tree-sra.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 4f0d2e5..be1b45e 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -653,7 +653,8 @@ type_internals_preclude_sra_p (tree type) if (TREE_THIS_VOLATILE (fld) || !DECL_FIELD_OFFSET (fld) || !DECL_SIZE (fld) || !host_integerp (DECL_FIELD_OFFSET (fld), 1) - || !host_integerp (DECL_SIZE (fld), 1)) + || !host_integerp (DECL_SIZE (fld), 1) + || (DECL_BIT_FIELD (fld) && AGGREGATE_TYPE_P (ft))) return true; if (AGGREGATE_TYPE_P (ft) |