2012-06-01 Oleg Endo <olegendo@gcc.gnu.org>
Backport from mainline
+ 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-06-01 Oleg Endo <olegendo@gcc.gnu.org>
+
+ Backport from mainline
2012-03-21 Kaz Kojima <kkojima@gcc.gnu.org>
PR target/52642
/* 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)
- from = PREV_INSN (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
may be the landing pad. */