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

--- Comment #29 from Segher Boessenkool <segher at gcc dot gnu.org> ---
This:

===
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 401e719..f0adef7 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -37988,7 +37988,10 @@ rs6000_call_sysv (rtx value, rtx func_desc, rtx
tlsarg,
       && flag_pic
       && GET_CODE (func_addr) == SYMBOL_REF
       && !SYMBOL_REF_LOCAL_P (func_addr))
-    call[n++] = gen_rtx_USE (VOIDmode, pic_offset_table_rtx);
+    {
+      crtl->uses_pic_offset_table = 1;
+      call[n++] = gen_rtx_USE (VOIDmode, pic_offset_table_rtx);
+    }

   call[n++] = gen_hard_reg_clobber (Pmode, LR_REGNO);

===

seems to do the trick.

Reply via email to