re PR rtl-optimization/52175 (ICE in maybe_record_trace_start after invalid dbr_schedule transformation)

gcc/
	PR rtl-optimization/52175
	* reorg.c (fill_slots_from_thread): Don't apply add/sub optimization
	to frame-related instructions.

gcc/testsuite/
	PR rtl-optimization/52175
	* gcc.c-torture/compile/pr52175.c: New test.

From-SVN: r184128
This commit is contained in:
Richard Sandiford 2012-02-11 09:00:42 +00:00 committed by Richard Sandiford
parent 4e92c31f3a
commit 4cb0fdbca0
4 changed files with 37 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2012-02-11 Richard Sandiford <rdsandiford@googlemail.com>
PR rtl-optimization/52175
* reorg.c (fill_slots_from_thread): Don't apply add/sub optimization
to frame-related instructions.
2012-02-10 Jason Merrill <jason@redhat.com>
PR c++/51910

View File

@ -2937,6 +2937,7 @@ fill_slots_from_thread (rtx insn, rtx condition, rtx thread,
if (delay_list == 0 && likely
&& new_thread && !ANY_RETURN_P (new_thread)
&& NONJUMP_INSN_P (new_thread)
&& !RTX_FRAME_RELATED_P (new_thread)
&& GET_CODE (PATTERN (new_thread)) != ASM_INPUT
&& asm_noperands (PATTERN (new_thread)) < 0)
{

View File

@ -1,3 +1,8 @@
2012-02-11 Richard Sandiford <rdsandiford@googlemail.com>
PR rtl-optimization/52175
* gcc.c-torture/compile/pr52175.c: New test.
2012-02-10 Jason Merrill <jason@redhat.com>
PR c++/51910

View File

@ -0,0 +1,25 @@
void bad (void);
char *foo (char *src, char **last)
{
char *dst;
int ch;
dst = src = (src ? src : *last);
if (*src == 0)
return 0;
while (src[0])
{
if (!src[1])
{
bad ();
break;
}
*dst = *src;
dst += 1;
src += 2;
}
*last = src;
*dst = 0;
return *last;
}