rs6000.c (rs6000_emit_move): Also use a TOC reference after forcing to constant memor...
authorEric Botcazou <ebotcazou@adacore.com>
Tue, 17 Jan 2017 17:33:43 +0000 (17:33 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Tue, 17 Jan 2017 17:33:43 +0000 (17:33 +0000)
* config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference
after forcing to constant memory when the code model is medium.

From-SVN: r244541

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index f311ece8a8acb591ef1307705cd704cfda307b1a..d63b83fbd9b249af69f1869c49cca45ecb93c777 100644 (file)
@@ -1,3 +1,8 @@
+2017-01-17  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * config/rs6000/rs6000.c (rs6000_emit_move): Also use a TOC reference
+       after forcing to constant memory when the code model is medium.
+
 2017-01-17  Julia Koval  <julia.koval@intel.com>
 
        PR target/76731
index 37ad7d04c2fc5b19eafbb2b2a959786d53280bab..63c62c39c49331df8d102bd55a249874e8fbe52f 100644 (file)
@@ -10980,10 +10980,7 @@ rs6000_emit_move (rtx dest, rtx source, machine_mode mode)
 
          if (TARGET_TOC
              && GET_CODE (XEXP (operands[1], 0)) == SYMBOL_REF
-             && constant_pool_expr_p (XEXP (operands[1], 0))
-             && ASM_OUTPUT_SPECIAL_POOL_ENTRY_P (
-                       get_pool_constant (XEXP (operands[1], 0)),
-                       get_pool_mode (XEXP (operands[1], 0))))
+             && use_toc_relative_ref (XEXP (operands[1], 0), mode))
            {
              rtx tocref = create_TOC_reference (XEXP (operands[1], 0),
                                                 operands[0]);