OSDN Git Service

PR tree-optimization/32681
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 9 Jul 2007 13:00:19 +0000 (13:00 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 9 Jul 2007 13:00:19 +0000 (13:00 +0000)
* tree-if-conv.c (find_phi_replacement_condition): Use the condition
saved in second_edge->aux when first_bb is a loop header.

testsuite/ChangeLog:

PR tree-optimization/32681
* gcc.dg/tree-ssa/pr32681.c: New test.

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

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/tree-ssa/pr32681.c [new file with mode: 0644]
gcc/tree-if-conv.c

index daa2d94..ca82ac2 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR tree-optimization/32681
+       * tree-if-conv.c (find_phi_replacement_condition): Use the condition
+       saved in second_edge->aux when first_bb is a loop header.
+
 2007-07-09  Jan HUbicka  <jh@suse.cz>
 
        * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
        replaced with shift_count_type.
        (__cmpdi2, __ucmpdi2): word_type of return type replaced with
        cmp_return_type.
-       * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return and
-       libgcc_shift_count attribute added.
+       * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
+       and libgcc_shift_count attribute added.
        * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
        TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
        (TARGET_INITIALIZER): New target hooks added.
 
        * config/s390/s390.c (s390_libgcc_cmp_return_mode,
        s390_libgcc_shift_count_mode): Functions added.
-       (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE): Target
-       hooks defined.
+       (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
+       Target hooks defined.
 
 2007-07-06  Richard Sandiford  <richard@codesourcery.com>
 
 
 2007-07-06  Uros Bizjak  <ubizjak@gmail.com>
 
-       PR rtl_optimization/32450
+       PR rtl-optimization/32450
        * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
        to ensure that instructions are not moved into the prologue when
        profiling is on.  Remove unused prologue_end variable.
index 6d03acc..6e61609 100644 (file)
@@ -1,3 +1,8 @@
+2007-07-09  Uros Bizjak  <ubizjak@gmail.com>
+
+       PR tree-optimization/32681
+       * gcc.dg/tree-ssa/pr32681.c: New test.
+
 2007-07-08  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/32678
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr32681.c b/gcc/testsuite/gcc.dg/tree-ssa/pr32681.c
new file mode 100644 (file)
index 0000000..2352342
--- /dev/null
@@ -0,0 +1,21 @@
+/* { dg-do compile } */
+/* { dg-options "-O3 -ffast-math -ftree-vectorize" } */
+/* { dg-options "-O3 -ffast-math -ftree-vectorize -march=nocona" { target { i?86-*-* x86_64-*-* } } } */
+
+int aa_renderpalette (int p)
+{
+  int y = 42;
+  int i;
+
+  for (i = 0; i < 256; i++)
+    {
+      if (y > 255)
+       y = 255;
+      if (y < 0)
+       y = 0;
+
+      if (p)
+       y = (y < p ? 0 : (y > p) * 255 / (255 - 2 * p));
+    }
+    return y;
+}
index c1ce57e..4714bd7 100644 (file)
@@ -751,7 +751,7 @@ find_phi_replacement_condition (struct loop *loop,
         AND it with the incoming bb predicate.  */
       if (second_edge->aux)
        *cond = build2 (TRUTH_AND_EXPR, boolean_type_node,
-                       *cond, first_edge->aux);
+                       *cond, second_edge->aux);
 
       if (TREE_CODE (*cond) == TRUTH_NOT_EXPR)
        /* We can be smart here and choose inverted