https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91289

--- Comment #2 from Philipp Spilger <philipp.spilger at kip dot 
uni-heidelberg.de> ---
Only reverting the "elf_low" insn changes of this commit leads to no encounter
of the problem, i.e. the following diff "resolves" the problem on
gcc-9_1_0-release.

diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index ad80592765d0..f797008eac9b 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -10138,11 +10138,13 @@
   "lis %0,%1@ha")

 (define_insn "elf_low"
-  [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
-       (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b")
+  [(set (match_operand:SI 0 "gpc_reg_operand" "=r,r")
+       (lo_sum:SI (match_operand:SI 1 "gpc_reg_operand" "b,!*r")
                   (match_operand 2 "" "")))]
    "TARGET_ELF && !TARGET_64BIT && !flag_pic"
-   "la %0,%2@l(%1)")
+   "@
+    la %0,%2@l(%1)
+    addic %0,%1,%K2")

 (define_insn "*pltseq_tocsave_<mode>"
   [(set (match_operand:P 0 "memory_operand" "=m")

Reply via email to