From: bergner Date: Fri, 12 Oct 2018 16:31:11 +0000 (+0000) Subject: PR rtl-optimization/87600 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3a18b2f8b7f3824ed27099ae8a7de9ddcc8c571e;p=thirdparty%2Fgcc.git PR rtl-optimization/87600 * ira-lives (non_conflicting_reg_copy_p): Disable for non LRA targets. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265113 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 239336756187..ac0106144596 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-10-12 Peter Bergner + + PR rtl-optimization/87600 + * ira-lives (non_conflicting_reg_copy_p): Disable for non LRA targets. + 2018-10-12 Paul Koning * doc/md.texi (doloop_end): Document that the pattern code may diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c index dd8b334d58ec..c5e85b91f48e 100644 --- a/gcc/ira-lives.c +++ b/gcc/ira-lives.c @@ -1064,6 +1064,11 @@ find_call_crossed_cheap_reg (rtx_insn *insn) rtx non_conflicting_reg_copy_p (rtx_insn *insn) { + /* Reload has issues with overlapping pseudos being assigned to the + same hard register, so don't allow it. See PR87600 for details. */ + if (!targetm.lra_p ()) + return NULL_RTX; + rtx set = single_set (insn); /* Disallow anything other than a simple register to register copy