OSDN Git Service

2008-01-25 Golovanevsky Olga <olga@il.ibm.com>
authorolga <olga@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jan 2008 07:47:46 +0000 (07:47 +0000)
committerolga <olga@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 25 Jan 2008 07:47:46 +0000 (07:47 +0000)
* ipa-struct-reorg.c (is_safe_cond_expr,
create_new_stmts_for_cond_expr): Use integer_zerop function,
that recognize not only zero-pointer, but zero-integer too.

2008-01-24  Olga Golovanevsky  <olga@il.ibm.com>

        * gcc.dg/struct/wo_prof_malloc_size_var.c: UnXFAIL.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131817 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/ipa-struct-reorg.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/struct/wo_prof_malloc_size_var.c

index f24d973..cf427b4 100644 (file)
@@ -1,3 +1,9 @@
+2008-01-25  Golovanevsky Olga  <olga@il.ibm.com>
+
+       * ipa-struct-reorg.c (is_safe_cond_expr, 
+       create_new_stmts_for_cond_expr): Use integer_zerop function,
+       that recognize not only zero-pointer, but zero-integer too.
+
 2008-01-25  Ben Elliston  <bje@au.ibm.com>
 
        PR other/22232
index 04948a3..9786db4 100644 (file)
@@ -1251,12 +1251,15 @@ create_new_stmts_for_cond_expr (tree stmt)
   s0 = (str0 != length) ? true : false;
   s1 = (str1 != length) ? true : false;
 
-  gcc_assert ((!s0 && s1) || (!s1 && s0));
+  gcc_assert (s0 || s1);
+  /* For now we allow only comparison with 0 or NULL.  */
+  gcc_assert (integer_zerop (arg0) || integer_zerop (arg1));
   
-  str = s0 ? VEC_index (structure, structures, str0): 
-    VEC_index (structure, structures, str1);
-  arg = s0 ? arg0 : arg1;
-  pos = s0 ? 0 : 1;
+  str = integer_zerop (arg0) ?
+    VEC_index (structure, structures, str1): 
+    VEC_index (structure, structures, str0);
+  arg = integer_zerop (arg0) ? arg1 : arg0;
+  pos = integer_zerop (arg0) ? 1 : 0;
   
   for (i = 0; VEC_iterate (tree, str->new_types, i, type); i++)
     {
@@ -2388,8 +2391,12 @@ is_safe_cond_expr (tree cond_stmt)
 
   s0 = (str0 != length) ? true : false;
   s1 = (str1 != length) ? true : false;
+  
+  if (!s0 && !s1)
+    return false;
 
-  if (!((!s0 && s1) || (!s1 && s0)))
+  /* For now we allow only comparison with 0 or NULL.  */
+  if (!integer_zerop (arg0) && !integer_zerop (arg1))
     return false;
 
   return true;
index 8af0ba2..8705d66 100644 (file)
@@ -1,3 +1,7 @@
+2008-01-25  Olga Golovanevsky  <olga@il.ibm.com>
+
+        * gcc.dg/struct/wo_prof_malloc_size_var.c: UnXFAIL.
+
 2008-01-24  Daniel Franke  <franke.daniel@gmail.com>
 
        PR fortran/34202
index b1614c0..32842b0 100644 (file)
@@ -32,6 +32,5 @@ main ()
 }
 
 /*--------------------------------------------------------------------------*/
-/* Currently the condition `if (p == 0)` is incorrectly reported as unsafe.  */
-/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" { xfail *-*-* } } } */
+/* { dg-final { scan-ipa-dump "Number of structures to transform is 1" "ipa_struct_reorg" } } */
 /* { dg-final { cleanup-ipa-dump "*" } } */