summaryrefslogtreecommitdiff
path: root/gcc/sel-sched.c
diff options
context:
space:
mode:
authorAlexander Monakov <amonakov@ispras.ru>2011-06-08 13:59:23 +0400
committerAlexander Monakov <amonakov@gcc.gnu.org>2011-06-08 13:59:23 +0400
commit6c8e9fc9e83e3a5d28705bc5460917f62a3f5a28 (patch)
treeca536f735bdbfe3960e007f1ab9a9c984da784a1 /gcc/sel-sched.c
parent0bad0e237a165500108ae56d06a1f1ae91bae5fd (diff)
downloadgcc-6c8e9fc9e83e3a5d28705bc5460917f62a3f5a28.tar.gz
re PR rtl-optimization/49303 (ICE: vinsn_detach, at sel-sched-ir.c:1277 w/ -O3 on ia64 in r174558)
PR rtl-optimization/49303 * sel-sched.c (move_op): Use correct type for 'res'. Verify that code_motion_path_driver returned 0 or 1. (sel_region_finish): Clear h_d_i_d. testsuite: * gcc.target/ia64/pr49303.c: New test. From-SVN: r174801
Diffstat (limited to 'gcc/sel-sched.c')
-rw-r--r--gcc/sel-sched.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
index 3f22a3cb6a9..8a39d80d250 100644
--- a/gcc/sel-sched.c
+++ b/gcc/sel-sched.c
@@ -6675,7 +6675,7 @@ move_op (insn_t insn, av_set_t orig_ops, expr_t expr_vliw,
{
struct moveop_static_params sparams;
struct cmpd_local_params lparams;
- bool res;
+ int res;
/* Init params for code_motion_path_driver. */
sparams.dest = dest;
@@ -6694,6 +6694,8 @@ move_op (insn_t insn, av_set_t orig_ops, expr_t expr_vliw,
code_motion_path_driver_info = &move_op_hooks;
res = code_motion_path_driver (insn, orig_ops, NULL, &lparams, &sparams);
+ gcc_assert (res != -1);
+
if (sparams.was_renamed)
EXPR_WAS_RENAMED (expr_vliw) = true;
@@ -7269,6 +7271,7 @@ sel_region_finish (bool reset_sched_cycles_p)
finish_deps_global ();
sched_finish_luids ();
+ VEC_free (haifa_deps_insn_data_def, heap, h_d_i_d);
sel_finish_bbs ();
BITMAP_FREE (blocks_to_reschedule);