backport: re PR middle-end/45472 ([Middle-end volatile semantics] ICE: in move_op_ascend, at sel-sched.c:6124 with -fselective-scheduling2)
Backport from mainline 2013-02-27 Andrey Belevantsev <abel@ispras.ru> PR middle-end/45472 * sel-sched-ir.c (merge_expr): Also change vinsn of merged expr when the may_trap_p bit of the exprs being merged differs. Reorder tests for speculativeness in the logical and operator. Backport from mainline 2013-03-05 Jakub Jelinek <jakub@redhat.com> PR middle-end/56461 * sel-sched-ir.c (free_sched_pools): Release succs_info_pool.stack[succs_info_pool.max_top] vectors too if succs_info_pool.max_top isn't -1. Backport from mainline 2013-02-27 Andrey Belevantsev <abel@ispras.ru> PR middle-end/45472 * gcc.dg/pr45472.c: New test. From-SVN: r197299
This commit is contained in:
parent
a171f1c16c
commit
d4e37aea87
|
@ -1,3 +1,22 @@
|
|||
2013-04-01 Andrey Belevantsev <abel@ispras.ru>
|
||||
|
||||
Backport from mainline
|
||||
2013-02-27 Andrey Belevantsev <abel@ispras.ru>
|
||||
|
||||
PR middle-end/45472
|
||||
|
||||
* sel-sched-ir.c (merge_expr): Also change vinsn of merged expr
|
||||
when the may_trap_p bit of the exprs being merged differs.
|
||||
Reorder tests for speculativeness in the logical and operator.
|
||||
|
||||
Backport from mainline
|
||||
2013-03-05 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/56461
|
||||
* sel-sched-ir.c (free_sched_pools): Release
|
||||
succs_info_pool.stack[succs_info_pool.max_top] vectors too
|
||||
if succs_info_pool.max_top isn't -1.
|
||||
|
||||
2013-04-01 Andrey Belevantsev <abel@ispras.ru>
|
||||
|
||||
Backport from mainline
|
||||
|
|
|
@ -1862,8 +1862,12 @@ merge_expr (expr_t to, expr_t from, insn_t split_point)
|
|||
/* Make sure that speculative pattern is propagated into exprs that
|
||||
have non-speculative one. This will provide us with consistent
|
||||
speculative bits and speculative patterns inside expr. */
|
||||
if (EXPR_SPEC_DONE_DS (to) == 0
|
||||
&& EXPR_SPEC_DONE_DS (from) != 0)
|
||||
if ((EXPR_SPEC_DONE_DS (from) != 0
|
||||
&& EXPR_SPEC_DONE_DS (to) == 0)
|
||||
/* Do likewise for volatile insns, so that we always retain
|
||||
the may_trap_p bit on the resulting expression. */
|
||||
|| (VINSN_MAY_TRAP_P (EXPR_VINSN (from))
|
||||
&& !VINSN_MAY_TRAP_P (EXPR_VINSN (to))))
|
||||
change_vinsn_in_expr (to, EXPR_VINSN (from));
|
||||
|
||||
merge_expr_data (to, from, split_point);
|
||||
|
@ -5019,7 +5023,7 @@ free_sched_pools (void)
|
|||
|
||||
free_alloc_pool (sched_lists_pool);
|
||||
gcc_assert (succs_info_pool.top == -1);
|
||||
for (i = 0; i < succs_info_pool.max_top; i++)
|
||||
for (i = 0; i <= succs_info_pool.max_top; i++)
|
||||
{
|
||||
VEC_free (rtx, heap, succs_info_pool.stack[i].succs_ok);
|
||||
VEC_free (rtx, heap, succs_info_pool.stack[i].succs_other);
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
2013-04-01 Andrey Belevantsev <abel@ispras.ru>
|
||||
|
||||
Backport from mainline
|
||||
2013-02-27 Andrey Belevantsev <abel@ispras.ru>
|
||||
|
||||
PR middle-end/45472
|
||||
* gcc.dg/pr45472.c: New test.
|
||||
|
||||
2013-03-26 Richard Biener <rguenther@suse.de>
|
||||
|
||||
Backport from mainline
|
||||
|
|
|
@ -0,0 +1,63 @@
|
|||
/* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-O -fschedule-insns2 -fselective-scheduling2" } */
|
||||
|
||||
struct S
|
||||
{
|
||||
volatile long vl;
|
||||
int i;
|
||||
};
|
||||
struct S s1, s2;
|
||||
|
||||
void
|
||||
foo (int j, int c)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i <= j; i++)
|
||||
{
|
||||
if (c)
|
||||
s2.vl += s1.vl;
|
||||
s1 = s2;
|
||||
}
|
||||
}
|
||||
/* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-O -fschedule-insns2 -fselective-scheduling2" } */
|
||||
|
||||
struct S
|
||||
{
|
||||
volatile long vl;
|
||||
int i;
|
||||
};
|
||||
struct S s1, s2;
|
||||
|
||||
void
|
||||
foo (int j, int c)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i <= j; i++)
|
||||
{
|
||||
if (c)
|
||||
s2.vl += s1.vl;
|
||||
s1 = s2;
|
||||
}
|
||||
}
|
||||
/* { dg-do compile { target powerpc*-*-* ia64-*-* x86_64-*-* } } */
|
||||
/* { dg-options "-O -fschedule-insns2 -fselective-scheduling2" } */
|
||||
|
||||
struct S
|
||||
{
|
||||
volatile long vl;
|
||||
int i;
|
||||
};
|
||||
struct S s1, s2;
|
||||
|
||||
void
|
||||
foo (int j, int c)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i <= j; i++)
|
||||
{
|
||||
if (c)
|
||||
s2.vl += s1.vl;
|
||||
s1 = s2;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue