diff options
author | Olivier Hainque <hainque@adacore.com> | 2008-05-06 12:13:07 +0000 |
---|---|---|
committer | Olivier Hainque <hainque@gcc.gnu.org> | 2008-05-06 12:13:07 +0000 |
commit | 2b9d6cf30e659c40d8458b22c6400f6da7bb0856 (patch) | |
tree | bcc397612d49065a6c04523a7d57b48fb68c575e /gcc/tree-sra.c | |
parent | 18efb1796541e7ebc9f9634755bfaf5c21a17773 (diff) | |
download | gcc-2b9d6cf30e659c40d8458b22c6400f6da7bb0856.zip gcc-2b9d6cf30e659c40d8458b22c6400f6da7bb0856.tar.gz gcc-2b9d6cf30e659c40d8458b22c6400f6da7bb0856.tar.bz2 |
tree-sra.c (try_instantiate_multiple_fields): Early return if field has POINTER_TYPE.
* tree-sra.c (try_instantiate_multiple_fields): Early return
if field has POINTER_TYPE.
testsuite/
* gnat.dg/fatp_sra.adb: New test.
From-SVN: r134982
Diffstat (limited to 'gcc/tree-sra.c')
-rw-r--r-- | gcc/tree-sra.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index 78a100f..9e15f92 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -1472,6 +1472,10 @@ try_instantiate_multiple_fields (struct sra_elt *elt, tree f) tree type, var; struct sra_elt *block; + /* Point fields are typically best handled as standalone entities. */ + if (POINTER_TYPE_P (TREE_TYPE (f))) + return f; + if (!is_sra_scalar_type (TREE_TYPE (f)) || !host_integerp (DECL_FIELD_OFFSET (f), 1) || !host_integerp (DECL_FIELD_BIT_OFFSET (f), 1) |