Commit 8b4c775b by Uros Bizjak

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
parent d241cd48
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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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.
......
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
/* { 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;
}
...@@ -751,7 +751,7 @@ find_phi_replacement_condition (struct loop *loop, ...@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment