From 5f9018a7490f287bbeaa99e5c25426f3d5435aac Mon Sep 17 00:00:00 2001
From: jconner <jconner@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 12 Sep 2005 15:46:35 +0000
Subject: [PATCH]     pr middle-end/23237     * ipa-reference.c
 (static_execute): Don't mark variables in     named sections TREE_READONLY.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104176 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog       |  6 ++++++
 gcc/ipa-reference.c | 15 +++++++++++----
 2 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6e9bfe415286..36dedc7c50ca 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2005-09-12  Josh Conner  <jconner@apple.com>
+
+	PR middle-end/23237
+	* ipa-reference.c (static_execute): Don't mark variables in
+	named sections TREE_READONLY.
+
 2005-09-12  Alan Modra  <amodra@bigpond.net.au>
 
 	* config/rs6000/rs6000.c (get_next_active_insn): Simplify test for
diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c
index f2f9252e8ac2..531705226a5e 100644
--- a/gcc/ipa-reference.c
+++ b/gcc/ipa-reference.c
@@ -963,10 +963,17 @@ static_execute (void)
     EXECUTE_IF_SET_IN_BITMAP (module_statics_readonly, 0, index, bi)
       {
 	tree var = get_static_decl (index);
-	TREE_READONLY (var) = 1;
-	if (dump_file)
-	  fprintf (dump_file, "read-only var %s\n", 
-		   get_static_name (index)); 
+
+	/* Ignore variables in named sections - changing TREE_READONLY
+	   changes the section flags, potentially causing conflicts with
+	   other variables in the same named section.  */
+	if (DECL_SECTION_NAME (var) == NULL_TREE)
+	  {
+	    TREE_READONLY (var) = 1;
+	    if (dump_file)
+	      fprintf (dump_file, "read-only var %s\n", 
+		       get_static_name (index));
+	  }
 	if (DECL_INITIAL (var)
 	    && is_gimple_min_invariant (DECL_INITIAL (var)))
 	  {
-- 
GitLab