mirror of git://gcc.gnu.org/git/gcc.git
re PR rtl-optimization/57968 (MODE_EXIT switches inserted too early)
PR rtl-optimization/57968
* mode-switching.c (create_pre_exit): Allow instructions that
don't set a return register to need a non-exit mode.
From-SVN: r201225
This commit is contained in:
parent
f1e1872559
commit
ce4a94223e
|
|
@ -1,3 +1,9 @@
|
||||||
|
2013-07-24 Joern Rennecke <joern.rennecke@embecosm.com>
|
||||||
|
|
||||||
|
PR rtl-optimization/57968
|
||||||
|
* mode-switching.c (create_pre_exit): Allow instructions that
|
||||||
|
don't set a return register to need a non-exit mode.
|
||||||
|
|
||||||
2013-07-24 Bill Schmidt <wschmidt@vnet.linux.ibm.com>
|
2013-07-24 Bill Schmidt <wschmidt@vnet.linux.ibm.com>
|
||||||
Anton Blanchard <anton@au1.ibm.com>
|
Anton Blanchard <anton@au1.ibm.com>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -330,12 +330,10 @@ create_pre_exit (int n_entities, int *entity_map, const int *num_modes)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (!targetm.calls.function_value_regno_p (copy_start))
|
if (!targetm.calls.function_value_regno_p (copy_start))
|
||||||
{
|
copy_num = 0;
|
||||||
last_insn = return_copy;
|
else
|
||||||
continue;
|
copy_num
|
||||||
}
|
= hard_regno_nregs[copy_start][GET_MODE (copy_reg)];
|
||||||
copy_num
|
|
||||||
= hard_regno_nregs[copy_start][GET_MODE (copy_reg)];
|
|
||||||
|
|
||||||
/* If the return register is not likely spilled, - as is
|
/* If the return register is not likely spilled, - as is
|
||||||
the case for floating point on SH4 - then it might
|
the case for floating point on SH4 - then it might
|
||||||
|
|
@ -372,6 +370,11 @@ create_pre_exit (int n_entities, int *entity_map, const int *num_modes)
|
||||||
forced_late_switch = 1;
|
forced_late_switch = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if (copy_num == 0)
|
||||||
|
{
|
||||||
|
last_insn = return_copy;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (copy_start >= ret_start
|
if (copy_start >= ret_start
|
||||||
&& copy_start + copy_num <= ret_end)
|
&& copy_start + copy_num <= ret_end)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue