re PR middle-end/32349 (ICE in df_refs_verify with -O2 -fmodulo-sched for spec tests)
2007-06-17 Kenneth Zadeck <zadeck@naturalbridge.com> PR middle-end/32349 * modulo-sched (generate_reg_moves): Added rescan parameter and if this is true, rescan insn being modified. (sms_schedule): Added rescan parameter. (rest_of_handle_sms): Moved freeing of dominance info to before getting out of cfg_layout. 2007-06-17 Kenneth Zadeck <zadeck@naturalbridge.com> * gcc.c-torture/compile/pr32349.c: New testcase. From-SVN: r125776
This commit is contained in:
parent
19caedae31
commit
5f7055585a
@ -1,3 +1,12 @@
|
||||
2007-06-17 Kenneth Zadeck <zadeck@naturalbridge.com>
|
||||
|
||||
PR middle-end/32349
|
||||
* modulo-sched (generate_reg_moves): Added rescan parameter and if
|
||||
this is true, rescan insn being modified.
|
||||
(sms_schedule): Added rescan parameter.
|
||||
(rest_of_handle_sms): Moved freeing of dominance info to before
|
||||
getting out of cfg_layout.
|
||||
|
||||
2007-06-17 Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
* config/m68k/m68k.h (ISA_HAS_FF1, ISA_HAS_MVS_MVZ): New.
|
||||
|
@ -426,7 +426,7 @@ calculate_maxii (ddg_ptr g)
|
||||
ii { 1 if not.
|
||||
*/
|
||||
static struct undo_replace_buff_elem *
|
||||
generate_reg_moves (partial_schedule_ptr ps)
|
||||
generate_reg_moves (partial_schedule_ptr ps, bool rescan)
|
||||
{
|
||||
ddg_ptr g = ps->g;
|
||||
int ii = ps->ii;
|
||||
@ -523,6 +523,8 @@ generate_reg_moves (partial_schedule_ptr ps)
|
||||
}
|
||||
|
||||
replace_rtx (g->nodes[i_use].insn, old_reg, new_reg);
|
||||
if (rescan)
|
||||
df_insn_rescan (g->nodes[i_use].insn);
|
||||
}
|
||||
|
||||
prev_reg = new_reg;
|
||||
@ -1151,7 +1153,7 @@ sms_schedule (void)
|
||||
|
||||
/* Generate the kernel just to be able to measure its cycles. */
|
||||
permute_partial_schedule (ps, g->closing_branch->first_note);
|
||||
reg_move_replaces = generate_reg_moves (ps);
|
||||
reg_move_replaces = generate_reg_moves (ps, false);
|
||||
|
||||
/* Get the number of cycles the new kernel expect to execute in. */
|
||||
new_cycles = kernel_number_of_cycles (BB_HEAD (g->bb), BB_END (g->bb));
|
||||
@ -1201,7 +1203,7 @@ sms_schedule (void)
|
||||
/* The life-info is not valid any more. */
|
||||
df_set_bb_dirty (g->bb);
|
||||
|
||||
reg_move_replaces = generate_reg_moves (ps);
|
||||
reg_move_replaces = generate_reg_moves (ps, true);
|
||||
if (dump_file)
|
||||
print_node_sched_params (dump_file, g->num_nodes);
|
||||
/* Generate prolog and epilog. */
|
||||
@ -2481,8 +2483,8 @@ rest_of_handle_sms (void)
|
||||
FOR_EACH_BB (bb)
|
||||
if (bb->next_bb != EXIT_BLOCK_PTR)
|
||||
bb->aux = bb->next_bb;
|
||||
cfg_layout_finalize ();
|
||||
free_dominance_info (CDI_DOMINATORS);
|
||||
cfg_layout_finalize ();
|
||||
#endif /* INSN_SCHEDULING */
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,3 +1,7 @@
|
||||
2007-06-17 Kenneth Zadeck <zadeck@naturalbridge.com>
|
||||
|
||||
* gcc.c-torture/compile/pr32349.c: New testcase.
|
||||
|
||||
2007-06-17 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
* gcc.target/sparc/align.c: Use 'unsigned char' as element type.
|
||||
|
26
gcc/testsuite/gcc.c-torture/compile/pr32349.c
Normal file
26
gcc/testsuite/gcc.c-torture/compile/pr32349.c
Normal file
@ -0,0 +1,26 @@
|
||||
/* { dg-options "-O2 -fmodulo-sched" } */
|
||||
|
||||
|
||||
extern long *x1, *x2, *x3;
|
||||
|
||||
int
|
||||
foo ()
|
||||
{
|
||||
/* Switching the following two lines prevents the ICE. */
|
||||
long *p1, *p2;
|
||||
long m, n, i;
|
||||
|
||||
p1 = x1;
|
||||
p2 = x2;
|
||||
n = 0;
|
||||
for (i = *x3; 0 < i; i--)
|
||||
{
|
||||
m = (*p1++) ^ (*p2++);
|
||||
m = (m & 0x55555555) + ((m >> 1) & 0x55555555);
|
||||
m = (m & 0x33333333) + ((m >> 2) & 0x33333333);
|
||||
m = (m + (m >> 4)) & 0x0f0f0f0f;
|
||||
m = (m + (m >> 8));
|
||||
n += m;
|
||||
}
|
||||
return n;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user