diff options
author | Segher Boessenkool <segher@kernel.crashing.org> | 2018-11-05 22:18:22 +0100 |
---|---|---|
committer | Segher Boessenkool <segher@gcc.gnu.org> | 2018-11-05 22:18:22 +0100 |
commit | 0f31a750311079962cb1082bc1202584da491aba (patch) | |
tree | ae1616cd3a0f335acbde3bf8ab1389e44297c00f /gcc | |
parent | 7bbdffa22bd3e0d3fcedb13447b33dd9bfef6f7f (diff) | |
download | gcc-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')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/combine.c | 3 |
2 files changed, 8 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 00273e5..0e4794c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2018-11-05 Segher Boessenkool <segher@kernel.crashing.org> + + PR rtl-optimization/87871 + * combine.c (make_more_copies): Skip if dest is frame_pointer_rtx. + 2018-11-05 Paul Koning <ni1d@arrl.net> * doc/sourcebuild.texi (target attributes): Document new "inf" 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; |