aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2018-11-05 22:18:22 +0100
committerSegher Boessenkool <segher@gcc.gnu.org>2018-11-05 22:18:22 +0100
commit0f31a750311079962cb1082bc1202584da491aba (patch)
treeae1616cd3a0f335acbde3bf8ab1389e44297c00f /gcc/combine.c
parent7bbdffa22bd3e0d3fcedb13447b33dd9bfef6f7f (diff)
downloadgcc-0f31a750311079962cb1082bc1202584da491aba.zip
gcc-0f31a750311079962cb1082bc1202584da491aba.tar.gz
gcc-0f31a750311079962cb1082bc1202584da491aba.tar.bz2
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
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index 3e20428..93bd3da 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;