All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
To: buildroot@busybox.net
Subject: [Buildroot] [git commit] gcc: add fix for PR 58595 to gcc 4.7.3
Date: Mon, 14 Apr 2014 22:37:38 +0200	[thread overview]
Message-ID: <20140414204029.40BDF9BEAD@busybox.osuosl.org> (raw)

commit: http://git.buildroot.net/buildroot/commit/?id=4285df4cdd337e5a6c41561e26642a8c3d72b7ed
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 .../4.7.3/843-gcc-4.7.3-Fix-PR-target-58595.patch  |  102 ++++++++++++++++++++
 1 files changed, 102 insertions(+), 0 deletions(-)

diff --git a/package/gcc/4.7.3/843-gcc-4.7.3-Fix-PR-target-58595.patch b/package/gcc/4.7.3/843-gcc-4.7.3-Fix-PR-target-58595.patch
new file mode 100644
index 0000000..656952c
--- /dev/null
+++ b/package/gcc/4.7.3/843-gcc-4.7.3-Fix-PR-target-58595.patch
@@ -0,0 +1,102 @@
+commit 4fa1f8926227d4e79975b674dc4292b9bec4b137
+Author: jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
+Date:   Thu Mar 6 12:07:07 2014 +0000
+
+    	PR target/58595
+    	* config/arm/arm.c (arm_tls_symbol_p): Remove.
+    	(arm_legitimize_address): Call legitimize_tls_address for any
+    	arm_tls_referenced_p expression, handle constant addend.  Call it
+    	before testing for !TARGET_ARM.
+    	(thumb_legitimize_address): Don't handle arm_tls_symbol_p here.
+    
+    	* gcc.dg/tls/pr58595.c: New test.
+    
+    
+    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk at 208380 138bc75d-0d04-0410-961f-82ee72b054a4
+
+diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
+index ce24bfe..af5666b 100644
+--- a/gcc/config/arm/arm.c
++++ b/gcc/config/arm/arm.c
+@@ -235,7 +235,6 @@ static tree arm_gimplify_va_arg_expr (tree, tree, gimple_seq *, gimple_seq *);
+ static void arm_option_override (void);
+ static unsigned HOST_WIDE_INT arm_shift_truncation_mask (enum machine_mode);
+ static bool arm_cannot_copy_insn_p (rtx);
+-static bool arm_tls_symbol_p (rtx x);
+ static int arm_issue_rate (void);
+ static void arm_output_dwarf_dtprel (FILE *, int, rtx) ATTRIBUTE_UNUSED;
+ static bool arm_output_addr_const_extra (FILE *, rtx);
+@@ -7336,6 +7335,32 @@ legitimize_tls_address (rtx x, rtx reg)
+ rtx
+ arm_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
+ {
++  if (arm_tls_referenced_p (x))
++    {
++      rtx addend = NULL;
++
++      if (GET_CODE (x) == CONST && GET_CODE (XEXP (x, 0)) == PLUS)
++	{
++	  addend = XEXP (XEXP (x, 0), 1);
++	  x = XEXP (XEXP (x, 0), 0);
++	}
++
++      if (GET_CODE (x) != SYMBOL_REF)
++	return x;
++
++      gcc_assert (SYMBOL_REF_TLS_MODEL (x) != 0);
++
++      x = legitimize_tls_address (x, NULL_RTX);
++
++      if (addend)
++	{
++	  x = gen_rtx_PLUS (SImode, x, addend);
++	  orig_x = x;
++	}
++      else
++	return x;
++    }
++
+   if (!TARGET_ARM)
+     {
+       /* TODO: legitimize_address for Thumb2.  */
+@@ -7344,9 +7369,6 @@ arm_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
+       return thumb_legitimize_address (x, orig_x, mode);
+     }
+ 
+-  if (arm_tls_symbol_p (x))
+-    return legitimize_tls_address (x, NULL_RTX);
+-
+   if (GET_CODE (x) == PLUS)
+     {
+       rtx xop0 = XEXP (x, 0);
+@@ -7459,9 +7481,6 @@ arm_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
+ rtx
+ thumb_legitimize_address (rtx x, rtx orig_x, enum machine_mode mode)
+ {
+-  if (arm_tls_symbol_p (x))
+-    return legitimize_tls_address (x, NULL_RTX);
+-
+   if (GET_CODE (x) == PLUS
+       && CONST_INT_P (XEXP (x, 1))
+       && (INTVAL (XEXP (x, 1)) >= 32 * GET_MODE_SIZE (mode)
+@@ -7756,20 +7775,6 @@ thumb_legitimize_reload_address (rtx *x_p,
+ 
+ /* Test for various thread-local symbols.  */
+ 
+-/* Return TRUE if X is a thread-local symbol.  */
+-
+-static bool
+-arm_tls_symbol_p (rtx x)
+-{
+-  if (! TARGET_HAVE_TLS)
+-    return false;
+-
+-  if (GET_CODE (x) != SYMBOL_REF)
+-    return false;
+-
+-  return SYMBOL_REF_TLS_MODEL (x) != 0;
+-}
+-
+ /* Helper for arm_tls_referenced_p.  */
+ 
+ static int

                 reply	other threads:[~2014-04-14 20:37 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140414204029.40BDF9BEAD@busybox.osuosl.org \
    --to=thomas.petazzoni@free-electrons.com \
    --cc=buildroot@busybox.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.