This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [patch] Fix for PR35041
- From: "Richard Guenther" <richard dot guenther at gmail dot com>
- To: "Alon Dayan" <ALOND at il dot ibm dot com>
- Cc: dnovillo at google dot com, "Olga Golovanevsky" <OLGA at il dot ibm dot com>, gcc-patches at gcc dot gnu dot org
- Date: Thu, 31 Jan 2008 21:41:52 +0100
- Subject: Re: [patch] Fix for PR35041
- References: <OF5641D403.6BF89FA7-ONC22573E1.00703EEF-C22573E1.0070A3A0@il.ibm.com>
On Jan 31, 2008 9:30 PM, Alon Dayan <ALOND@il.ibm.com> wrote:
>
> This patch fixes PR 35041.
>
> Bootstrapped on powerpc-suse-linux. All struct-reorg tests passed
> successfully.
>
> OK for mainline?
>
> Alon.
>
> Index: ChangeLog
> ===================================================================
> --- ChangeLog (revision 131977)
> +++ ChangeLog (working copy)
> @@ -1,3 +1,9 @@
> +2008-01-31 Alon Dayan <alond@il.ibm.com>
> +
> + PR tree-optimization/35041
> + * ipa-struct-reorg.c (find_pos_in_stmt_1): Add another option
> + to locate the right position in a statement.
> +
> 2008-01-31 Richard Sandiford <rsandifo@nildram.co.uk>
>
> PR rtl-optimization/34995
> Index: testsuite/gcc.dg/struct/wo_prof_double_malloc.c
> ===================================================================
> --- testsuite/gcc.dg/struct/wo_prof_double_malloc.c (revision 0)
> +++ testsuite/gcc.dg/struct/wo_prof_double_malloc.c (revision 0)
> @@ -0,0 +1,30 @@
> +/* { dg-do compile } */
> +/* { dg-do run } */}
Extra }. run or compile?
> +#include <stdlib.h>}
extra }
did you really test this?
> +typedef struct test_struct
> +{
> + int a;
> + int b;
> +} type_struct;
> +}
extra }
> +typedef type_struct **struct_pointer2;
> +
> +struct_pointer2 str1;
> +
> +int main()
> +{
> + int i, j;
> +
> + str1 = malloc (2 * sizeof (type_struct*));
> +
> + for (i=0; i<=1; i++)
> + str1[i] = malloc (2 * sizeof (type_struct));.
extra .
> +
> + return 0;
> +}
> +}
extra }
> +/*--------------------------------------------------------------------------*/
> +/* { dg-final { scan-ipa-dump "Number of structures to transform is 1"
> "ipa_struct_reorg" } } */
> +/* { dg-final { cleanup-ipa-dump "*" } } */
> Index: testsuite/ChangeLog
> ===================================================================
> --- testsuite/ChangeLog (revision 131977)
> +++ testsuite/ChangeLog (working copy)
> @@ -1,3 +1,8 @@
> +2008-01-31 Alon Dayan <alond@il.ibm.com>
> +
> + PR tree-optimization/35041
> + * gcc.dg/struct/wo_prof_double_malloc.c: New test.
> +
> 2008-01-30 Jan Hubicka <jh@suse.cz>
>
> * gcc.c-torture/execute/pr34982.c: Add forgotten return 0.
> Index: ipa-struct-reorg.c
> ===================================================================
> --- ipa-struct-reorg.c (revision 131977)
> +++ ipa-struct-reorg.c (working copy)
> @@ -887,7 +887,9 @@
> tree ref = r_pos->ref;
> tree t = *tp;
>
> - if (t == ref)
> + if (t == ref ||
> + (TREE_CODE (t) == SSA_NAME
> + && SSA_NAME_VAR (t) == ref)))
|| goes on the next line. Is t always VAR_DECL or an SSA_NAME? If not,
you probably should use operand_equal_p (t, ref, 0) here.
Richard.
> {
> r_pos->pos = tp;
> return t;
>
>
>