re PR target/52667 (sh_reorg segfault)

2012-03-27  Chung-Lin Tang  <cltang@codesourcery.com>

	PR target/52667
	* config/sh/sh.c (find_barrier): Add equality check of last_got
	to avoid going above orig insn. Update comments.

From-SVN: r185867
This commit is contained in:
Chung-Lin Tang 2012-03-27 13:05:01 +00:00 committed by Chung-Lin Tang
parent 005aa1b4fb
commit 066922e6cd
2 changed files with 12 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2012-03-27 Chung-Lin Tang <cltang@codesourcery.com>
PR target/52667
* config/sh/sh.c (find_barrier): Add equality check of last_got
to avoid going above orig insn. Update comments.
2012-03-27 Richard Guenther <rguenther@suse.de>
PR middle-end/52720

View File

@ -4751,8 +4751,12 @@ find_barrier (int num_mova, rtx mova, rtx from)
/* Don't emit a constant table int the middle of global pointer setting,
since that that would move the addressing base GOT into another table.
We need the first mov instruction before the _GLOBAL_OFFSET_TABLE_
in the pool anyway, so just move up the whole constant pool. */
if (last_got)
in the pool anyway, so just move up the whole constant pool.
However, avoid doing so when the last single GOT mov is the starting
insn itself. Going past above the start insn would create a negative
offset, causing errors. */
if (last_got && last_got != orig)
from = PREV_INSN (last_got);
/* Don't insert the constant pool table at the position which