diff --git a/gcc/ChangeLog b/gcc/ChangeLog index daa2d947d7b..ca82ac2f540 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2007-07-09 Uros Bizjak + + 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 * cse.c (cse_insn): Avoid invalid sharing on trial replacement. @@ -152,8 +158,8 @@ 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. @@ -173,8 +179,8 @@ * 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 @@ -199,7 +205,7 @@ 2007-07-06 Uros Bizjak - 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. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6d03acc699b..6e616091aba 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2007-07-09 Uros Bizjak + + PR tree-optimization/32681 + * gcc.dg/tree-ssa/pr32681.c: New test. + 2007-07-08 Jerry DeLisle 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 index 00000000000..2352342443b --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr32681.c @@ -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; +} diff --git a/gcc/tree-if-conv.c b/gcc/tree-if-conv.c index c1ce57ee297..4714bd7bce5 100644 --- a/gcc/tree-if-conv.c +++ b/gcc/tree-if-conv.c @@ -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