From d25fabdc8e1ee25a077aa628432fad6d63b66b8f Mon Sep 17 00:00:00 2001
From: Eric Botcazou <ebotcazou@adacore.com>
Date: Tue, 17 Jan 2017 17:33:43 +0000
Subject: [PATCH] rs6000.c (rs6000_emit_move): Also use a TOC reference after
 forcing to constant memory when...

	* 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              | 5 +++++
 gcc/config/rs6000/rs6000.c | 5 +----
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index f311ece8a8ac..d63b83fbd9b2 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 37ad7d04c2fc..63c62c39c493 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -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]);
-- 
GitLab