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> 2007-07-09 Jan HUbicka <jh@suse.cz>
* cse.c (cse_insn): Avoid invalid sharing on trial replacement. * cse.c (cse_insn): Avoid invalid sharing on trial replacement.
@ -152,8 +158,8 @@
replaced with shift_count_type. replaced with shift_count_type.
(__cmpdi2, __ucmpdi2): word_type of return type replaced with (__cmpdi2, __ucmpdi2): word_type of return type replaced with
cmp_return_type. cmp_return_type.
* c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return and * c-common.c (handle_mode_attribute): Handling for libgcc_cmp_return
libgcc_shift_count attribute added. and libgcc_shift_count attribute added.
* target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE, * target-def.h (TARGET_LIBGCC_CMP_RETURN_MODE,
TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined. TARGET_LIBGCC_SHIFT_COUNT_MODE): New target hooks defined.
(TARGET_INITIALIZER): New target hooks added. (TARGET_INITIALIZER): New target hooks added.
@ -173,8 +179,8 @@
* config/s390/s390.c (s390_libgcc_cmp_return_mode, * config/s390/s390.c (s390_libgcc_cmp_return_mode,
s390_libgcc_shift_count_mode): Functions added. s390_libgcc_shift_count_mode): Functions added.
(TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE): Target (TARGET_LIBGCC_CMP_RETURN_MODE, TARGET_LIBGCC_SHIFT_COUNT_MODE):
hooks defined. Target hooks defined.
2007-07-06 Richard Sandiford <richard@codesourcery.com> 2007-07-06 Richard Sandiford <richard@codesourcery.com>
@ -199,7 +205,7 @@
2007-07-06 Uros Bizjak <ubizjak@gmail.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 * function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
to ensure that instructions are not moved into the prologue when to ensure that instructions are not moved into the prologue when
profiling is on. Remove unused prologue_end variable. 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> 2007-07-08 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/32678 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. */ AND it with the incoming bb predicate. */
if (second_edge->aux) if (second_edge->aux)
*cond = build2 (TRUTH_AND_EXPR, boolean_type_node, *cond = build2 (TRUTH_AND_EXPR, boolean_type_node,
*cond, first_edge->aux); *cond, second_edge->aux);
if (TREE_CODE (*cond) == TRUTH_NOT_EXPR) if (TREE_CODE (*cond) == TRUTH_NOT_EXPR)
/* We can be smart here and choose inverted /* We can be smart here and choose inverted