diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a13353456c3..0b6653d6b1f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2008-03-13 Alon Dayan + Olga Golovanevsky + + 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-03-13 Uros Bizjak PR target/34000 diff --git a/gcc/ipa-struct-reorg.c b/gcc/ipa-struct-reorg.c index 514b9a22898..515dba67206 100644 --- a/gcc/ipa-struct-reorg.c +++ b/gcc/ipa-struct-reorg.c @@ -887,7 +887,7 @@ find_pos_in_stmt_1 (tree *tp, int *walk_subtrees, void * data) tree ref = r_pos->ref; tree t = *tp; - if (t == ref) + if (t == ref || (TREE_CODE (t) == SSA_NAME && SSA_NAME_VAR (t) == ref)) { r_pos->pos = tp; return t; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dbd8e8bfca3..b77a93cd580 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2008-02-19 Alon Dayan + Olga Golovanevsky + + PR tree-optimization/35041 + * gcc.dg/struct/wo_prof_double_malloc.c: New test. + 2008-03-13 Uros Bizjak PR target/34000 diff --git a/gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c b/gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c new file mode 100644 index 00000000000..27503f82464 --- /dev/null +++ b/gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c @@ -0,0 +1,30 @@ +/* { dg-do compile } */ +/* { dg-do run } */ + +#include + +typedef struct test_struct +{ + int a; + int b; +} type_struct; + +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)); + + return 0; +} + +/*--------------------------------------------------------------------------*/ +/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" } } */ +/* { dg-final { cleanup-ipa-dump "*" } } */