aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/ipa-struct-reorg.c2
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c30
4 files changed, 44 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a133534..0b6653d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2008-03-13 Alon Dayan <alond@il.ibm.com>
+ Olga Golovanevsky <olga@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-03-13 Uros Bizjak <ubizjak@gmail.com>
PR target/34000
diff --git a/gcc/ipa-struct-reorg.c b/gcc/ipa-struct-reorg.c
index 514b9a2..515dba6 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 dbd8e8b..b77a93c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2008-02-19 Alon Dayan <alond@il.ibm.com>
+ Olga Golovanevsky <olga@il.ibm.com>
+
+ PR tree-optimization/35041
+ * gcc.dg/struct/wo_prof_double_malloc.c: New test.
+
2008-03-13 Uros Bizjak <ubizjak@gmail.com>
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 0000000..27503f8
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/struct/wo_prof_double_malloc.c
@@ -0,0 +1,30 @@
+/* { dg-do compile } */
+/* { dg-do run } */
+
+#include <stdlib.h>
+
+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 "*" } } */