re PR target/83507 (ICE in internal_dfa_insn_code_* for powerpc targets)
PR target/83507 * modulo-sched.c (schedule_reg_moves): Punt if we'd need to move hard registers. Formatting fixes. * gcc.dg/sms-13.c: New test. From-SVN: r256368
This commit is contained in:
parent
5190f1f98d
commit
3a123ed751
|
@ -1,5 +1,9 @@
|
|||
2018-01-09 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/83507
|
||||
* modulo-sched.c (schedule_reg_moves): Punt if we'd need to move
|
||||
hard registers. Formatting fixes.
|
||||
|
||||
PR preprocessor/83722
|
||||
* gcc.c (try_generate_repro): Pass
|
||||
&temp_stderr_files[RETRY_ICE_ATTEMPTS - 1] rather than
|
||||
|
|
|
@ -687,9 +687,9 @@ schedule_reg_moves (partial_schedule_ptr ps)
|
|||
rtx set = single_set (u->insn);
|
||||
|
||||
/* Skip instructions that do not set a register. */
|
||||
if ((set && !REG_P (SET_DEST (set))))
|
||||
if (set && !REG_P (SET_DEST (set)))
|
||||
continue;
|
||||
|
||||
|
||||
/* Compute the number of reg_moves needed for u, by looking at life
|
||||
ranges started at u (excluding self-loops). */
|
||||
distances[0] = distances[1] = false;
|
||||
|
@ -743,7 +743,10 @@ schedule_reg_moves (partial_schedule_ptr ps)
|
|||
first_move += ps->g->num_nodes;
|
||||
|
||||
/* Generate each move. */
|
||||
old_reg = prev_reg = SET_DEST (single_set (u->insn));
|
||||
old_reg = prev_reg = SET_DEST (set);
|
||||
if (HARD_REGISTER_P (old_reg))
|
||||
return false;
|
||||
|
||||
for (i_reg_move = 0; i_reg_move < nreg_moves; i_reg_move++)
|
||||
{
|
||||
ps_reg_move_info *move = ps_reg_move (ps, first_move + i_reg_move);
|
||||
|
|
|
@ -1,6 +1,11 @@
|
|||
2018-01-09 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR target/83507
|
||||
* gcc.dg/sms-13.c: New test.
|
||||
|
||||
2018-01-08 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
PR Fortran/83741
|
||||
PR fortran/83741
|
||||
* gfortran.dg/allocate_assumed_charlen_3.f90: New test.
|
||||
|
||||
2018-01-08 Chih-Mao Chen <pkmx.tw@gmail.com>
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
/* PR target/83507 */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -fmodulo-sched -fno-tree-ter -fno-tree-coalesce-vars" } */
|
||||
|
||||
void
|
||||
foo (unsigned short int x, unsigned char y)
|
||||
{
|
||||
unsigned char *a = &y;
|
||||
unsigned short int b;
|
||||
int c;
|
||||
|
||||
while (y < 3)
|
||||
{
|
||||
if (x != 0)
|
||||
++y;
|
||||
++y;
|
||||
}
|
||||
|
||||
for (c = 0; c < 5; ++c)
|
||||
{
|
||||
int d = 1;
|
||||
d += b > x;
|
||||
y &= d;
|
||||
}
|
||||
|
||||
do
|
||||
{
|
||||
c += y;
|
||||
x = c;
|
||||
}
|
||||
while (x != 0);
|
||||
}
|
Loading…
Reference in New Issue