From b257ce2780d4a3554329091b3152a5806af6f259 Mon Sep 17 00:00:00 2001 From: hainque Date: Tue, 6 May 2008 12:13:07 +0000 Subject: [PATCH] * tree-sra.c (try_instantiate_multiple_fields): Early return if field has POINTER_TYPE. testsuite/ * gnat.dg/fatp_sra.adb: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@134982 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gnat.dg/fatp_sra.adb | 17 +++++++++++++++++ gcc/tree-sra.c | 4 ++++ 4 files changed, 30 insertions(+) create mode 100644 gcc/testsuite/gnat.dg/fatp_sra.adb diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b8e9790..1fe2793 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2008-05-06 Olivier Hainque + + * tree-sra.c (try_instantiate_multiple_fields): Early return + if field has POINTER_TYPE. + 2008-05-06 Kai Tietz * config/i386/i386.c (output_set_got): Fix for x86_64 output_emit_asm diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ecae395..25e806f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2008-05-06 Olivier Hainque + + * gnat.dg/fatp_sra.adb: New test. + 2008-05-05 Andrew Pinski PR middle-end/36141 diff --git a/gcc/testsuite/gnat.dg/fatp_sra.adb b/gcc/testsuite/gnat.dg/fatp_sra.adb new file mode 100644 index 0000000..a964737 --- /dev/null +++ b/gcc/testsuite/gnat.dg/fatp_sra.adb @@ -0,0 +1,17 @@ +-- { dg-do compile } +-- { dg-options "-gnatp -O1" } + +procedure Fatp_Sra is + + function X return String is + begin + return "X"; + end; + + function Letter return String is + begin + return X; + end; +begin + null; +end; 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) -- 2.7.4