re PR debug/52727 (internal compiler error at dwarf2cfi.c2:685)
PR debug/52727 * combine-stack-adj.c: Revert r206943. * sched-int.h (struct deps_desc): Add last_args_size. * sched-deps.c (init_deps): Initialize it. (sched_analyze_insn): Add OUTPUT dependencies between insns that contain REG_ARGS_SIZE notes. From-SVN: r207518
This commit is contained in:
parent
9cf7975d8b
commit
76df831f5d
@ -1,3 +1,12 @@
|
||||
2014-02-05 Richard Henderson <rth@redhat.com>
|
||||
|
||||
PR debug/52727
|
||||
* combine-stack-adj.c: Revert r206943.
|
||||
* sched-int.h (struct deps_desc): Add last_args_size.
|
||||
* sched-deps.c (init_deps): Initialize it.
|
||||
(sched_analyze_insn): Add OUTPUT dependencies between insns that
|
||||
contain REG_ARGS_SIZE notes.
|
||||
|
||||
2014-02-05 Jan Hubicka <hubicka@ucw.cz>
|
||||
|
||||
* lto-cgraph.c (asm_nodes_output): Make global.
|
||||
|
@ -567,7 +567,6 @@ combine_stack_adjustments_for_block (basic_block bb)
|
||||
&& try_apply_stack_adjustment (insn, reflist, 0,
|
||||
-last_sp_adjust))
|
||||
{
|
||||
rtx note;
|
||||
if (last2_sp_set)
|
||||
maybe_move_args_size_note (last2_sp_set, last_sp_set, false);
|
||||
else
|
||||
@ -577,11 +576,6 @@ combine_stack_adjustments_for_block (basic_block bb)
|
||||
reflist = NULL;
|
||||
last_sp_set = NULL_RTX;
|
||||
last_sp_adjust = 0;
|
||||
/* We no longer adjust stack size. Whoever adjusted it earlier
|
||||
hopefully got the note right. */
|
||||
note = find_reg_note (insn, REG_ARGS_SIZE, NULL_RTX);
|
||||
if (note)
|
||||
remove_note (insn, note);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
@ -3470,6 +3470,15 @@ sched_analyze_insn (struct deps_desc *deps, rtx x, rtx insn)
|
||||
change_spec_dep_to_hard (sd_it);
|
||||
}
|
||||
}
|
||||
|
||||
/* We do not yet have code to adjust REG_ARGS_SIZE, therefore we must
|
||||
honor their original ordering. */
|
||||
if (find_reg_note (insn, REG_ARGS_SIZE, NULL))
|
||||
{
|
||||
if (deps->last_args_size)
|
||||
add_dependence (insn, deps->last_args_size, REG_DEP_OUTPUT);
|
||||
deps->last_args_size = insn;
|
||||
}
|
||||
}
|
||||
|
||||
/* Return TRUE if INSN might not always return normally (e.g. call exit,
|
||||
@ -3876,6 +3885,7 @@ init_deps (struct deps_desc *deps, bool lazy_reg_last)
|
||||
deps->sched_before_next_jump = 0;
|
||||
deps->in_post_call_group_p = not_post_call;
|
||||
deps->last_debug_insn = 0;
|
||||
deps->last_args_size = 0;
|
||||
deps->last_reg_pending_barrier = NOT_A_BARRIER;
|
||||
deps->readonly = 0;
|
||||
}
|
||||
|
@ -539,6 +539,9 @@ struct deps_desc
|
||||
/* The last debug insn we've seen. */
|
||||
rtx last_debug_insn;
|
||||
|
||||
/* The last insn bearing REG_ARGS_SIZE that we've seen. */
|
||||
rtx last_args_size;
|
||||
|
||||
/* The maximum register number for the following arrays. Before reload
|
||||
this is max_reg_num; after reload it is FIRST_PSEUDO_REGISTER. */
|
||||
int max_reg;
|
||||
|
Loading…
x
Reference in New Issue
Block a user