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:
parent
d241cd48e0
commit
8b4c775b68
@ -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.
|
||||||
|
@ -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
|
||||||
|
21
gcc/testsuite/gcc.dg/tree-ssa/pr32681.c
Normal file
21
gcc/testsuite/gcc.dg/tree-ssa/pr32681.c
Normal 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;
|
||||||
|
}
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user