re PR tree-optimization/32681 (ice for legal C code with flags -ffast-math -O3 -ftree-vectorize)

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.

testsuite/ChangeLog:

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

From-SVN: r126482
This commit is contained in:
Uros Bizjak 2007-07-09 15:00:19 +02:00
parent d241cd48e0
commit 8b4c775b68
4 changed files with 38 additions and 6 deletions

View 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.
@ -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 <richard@codesourcery.com>
@ -199,7 +205,7 @@
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.

View 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

View File

@ -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;
}

View 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