mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-08 09:41:09 +08:00
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:
parent
005aa1b4fb
commit
066922e6cd
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user