From 0f31a750311079962cb1082bc1202584da491aba Mon Sep 17 00:00:00 2001 From: Segher Boessenkool Date: Mon, 5 Nov 2018 22:18:22 +0100 Subject: [PATCH] combine: Don't make an intermediate reg for assigning to sfp (PR87871) The code with an intermediate register is perfectly fine, but LRA apparently cannot handle the resulting code, or perhaps something else is wrong. In either case, making an extra temporary will not likely help here, so let's just skip it. PR rtl-optimization/87871 * combine.c (make_more_copies): Skip if dest is frame_pointer_rtx. From-SVN: r265821 --- gcc/ChangeLog | 5 +++++ gcc/combine.c | 3 +++ 2 files changed, 8 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 00273e5fc397..0e4794ce36f9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-11-05 Segher Boessenkool + + PR rtl-optimization/87871 + * combine.c (make_more_copies): Skip if dest is frame_pointer_rtx. + 2018-11-05 Paul Koning * doc/sourcebuild.texi (target attributes): Document new "inf" diff --git a/gcc/combine.c b/gcc/combine.c index 3e2042886d59..93bd3da26d7b 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -14959,6 +14959,9 @@ make_more_copies (void) rtx dest = SET_DEST (set); if (dest == pc_rtx) continue; + /* See PR87871. */ + if (dest == frame_pointer_rtx) + continue; rtx src = SET_SRC (set); if (!(REG_P (src) && HARD_REGISTER_P (src))) continue;