]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
(SELECT_SECTION): Variables go in readonly data
authorJim Wilson <wilson@gcc.gnu.org>
Fri, 18 Mar 1994 23:43:00 +0000 (15:43 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Fri, 18 Mar 1994 23:43:00 +0000 (15:43 -0800)
only if the initializer is constant.

From-SVN: r6820

gcc/config/i386/osfrose.h
gcc/config/i386/svr3gas.h
gcc/config/m88k/m88k.h
gcc/config/mips/mips.h
gcc/config/nextstep.h
gcc/config/rs6000/rs6000.h
gcc/config/sparc/sparc.h
gcc/config/svr3.h
gcc/config/svr4.h
gcc/config/vax/vms.h

index 858c2772e68d37e498e5bc71ad42a5e54ebd4bd1..14f4b95f661b1f6727e4e43bd28f88a99db97969 100644 (file)
@@ -707,7 +707,10 @@ while (0)
   else if (TREE_CODE (DECL) != VAR_DECL)                               \
     readonly_data_section ();                                          \
                                                                        \
-  else if (!TREE_READONLY (DECL))                                      \
+  else if (!TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL)           \
+          || !DECL_INITIAL (DECL)                                      \
+          || (DECL_INITIAL (DECL) != error_mark_node                   \
+              && !TREE_CONSTANT (DECL_INITIAL (DECL))))                \
     data_section ();                                                   \
                                                                        \
   else                                                                 \
index d6b0d95b0e12cb2769cfbbf9980776d89b1420c6..cafbdd56a4fb390631cdcb6e162887012e5cde23 100644 (file)
@@ -255,7 +255,10 @@ dtors_section ()                                                   \
   else if (TREE_CODE (DECL) == VAR_DECL)                               \
     {                                                                  \
       if ((0 && RELOC) /* should be (flag_pic && RELOC) */             \
-         || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL))         \
+         || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL)          \
+         || !DECL_INITIAL (DECL)                                       \
+         || (DECL_INITIAL (DECL) != error_mark_node                    \
+             && !TREE_CONSTANT (DECL_INITIAL (DECL))))                 \
        data_section ();                                                \
       else                                                             \
        const_section ();                                               \
index a0203b4dfda445f29fe161e3b1632a832e1eea31..6c41e4e3ffccb8cc3657a7a4c07eb7ca9b7dea70 100644 (file)
@@ -197,13 +197,13 @@ extern char * reg_names[];
    Redefined in sysv4.h, and luna.h.  */
 #define VERSION_INFO1  "88open OCS/BCS, "
 #ifndef VERSION_INFO2
-#define VERSION_INFO2   "$Revision: 1.57 $"
+#define VERSION_INFO2   "$Revision: 1.58 $"
 #endif
 
 #ifndef VERSION_STRING
 #define VERSION_STRING  version_string
 #ifdef __STDC__
-#define TM_RCS_ID      "@(#)" __FILE__ " $Revision: 1.57 $ " __DATE__
+#define TM_RCS_ID      "@(#)" __FILE__ " $Revision: 1.58 $ " __DATE__
 #else
 #define TM_RCS_ID      "$What$"
 #endif  /* __STDC__ */
@@ -2552,7 +2552,10 @@ sdata_section ()                                                 \
       if (SYMBOL_REF_FLAG (XEXP (DECL_RTL (DECL), 0)))                 \
        sdata_section ();                                               \
       else if ((flag_pic && RELOC)                                     \
-         || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL))         \
+              || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL)     \
+              || !DECL_INITIAL (DECL)                                  \
+              || (DECL_INITIAL (DECL) != error_mark_node               \
+                  && !TREE_CONSTANT (DECL_INITIAL (DECL))))            \
        data_section ();                                                \
       else                                                             \
        const_section ();                                               \
index e9bd74490c630d006074ff7fc5233b4c3cb3d88c..bb20567bc2a6aac75954f5eefb4a9689839a4fc6 100644 (file)
@@ -3528,7 +3528,10 @@ rdata_section ()                                                 \
   else if (TREE_CODE (DECL) != VAR_DECL)                               \
     rdata_section ();                                                  \
                                                                        \
-  else if (!TREE_READONLY (DECL))                                      \
+  else if (!TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL)           \
+          || !DECL_INITIAL (DECL)                                      \
+          || (DECL_INITIAL (DECL) != error_mark_node                   \
+              && !TREE_CONSTANT (DECL_INITIAL (DECL))))                \
     data_section ();                                                   \
                                                                        \
   else                                                                 \
index 3fc507a21564f07e95bd881db476142f19fdd865..d6e7003cfe8942047b30f4874cbb091f11ea64f2 100644 (file)
@@ -536,11 +536,19 @@ objc_section_init ()                              \
          else                                                          \
            data_section ();                                            \
        }                                                               \
-      else if ((TREE_READONLY (exp) || TREE_CONSTANT (exp))    \
-              && !TREE_SIDE_EFFECTS (exp))                             \
-       readonly_data_section ();                                       \
+      else if (TREE_CODE (DECL) == VAR_DECL)                           \
+       {                                                               \
+         if ((flag_pic && RELOC)                                       \
+             || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL)      \
+             || !DECL_INITIAL (DECL)                                   \
+             || (DECL_INITIAL (DECL) != error_mark_node                \
+                 && !TREE_CONSTANT (DECL_INITIAL (DECL))))             \
+           data_section ();                                            \
+         else                                                          \
+           readonly_data_section ();                                   \
+       }                                                               \
       else                                                             \
-        data_section ();                                               \
+       readonly_data_section ();                                       \
     }                                                                  \
   while (0)
 
index 0662d5562f203911fabdeaa1664a0db46b3494af..3bd77cd369e59d52eae4cdede0097002107d2c35 100644 (file)
@@ -1747,11 +1747,13 @@ toc_section ()                                          \
 
 #define SELECT_SECTION(EXP,RELOC)                      \
 {                                                      \
-  if ((TREE_READONLY (EXP)                             \
-       || (TREE_CODE (EXP) == STRING_CST               \
-          && !flag_writable_strings))                  \
-      && ! TREE_THIS_VOLATILE (EXP)                    \
-      && ! (RELOC))                                    \
+  if ((TREE_CODE (EXP) == STRING_CST                   \
+       && !flag_writable_strings)                      \
+      || (TREE_READONLY (EXP) && ! TREE_THIS_VOLATILE (EXP) \
+         && DECL_INITIAL (EXP)                         \
+         && (DECL_INITIAL (EXP) == error_mark_node     \
+             || TREE_CONSTANT (DECL_INITIAL (EXP)))    \
+         && ! (RELOC)))                                \
     {                                                  \
       if (TREE_PUBLIC (EXP))                           \
         read_only_data_section ();                     \
index 76611a9e29b9853a13eea72c94a64ac7809b62a4..9fe8b82bab92471b8a89e60775bff1591df3f9f8 100644 (file)
@@ -282,6 +282,9 @@ extern int target_flags;
   if (TREE_CODE (T) == VAR_DECL)                                       \
     {                                                                  \
       if (TREE_READONLY (T) && ! TREE_SIDE_EFFECTS (T)                 \
+         && DECL_INITIAL (T)                                           \
+         && (DECL_INITIAL (T) == error_mark_node                       \
+             || TREE_CONSTANT (DECL_INITIAL (T)))                      \
          && DECL_ALIGN (T) <= MAX_TEXT_ALIGN                           \
          && ! (flag_pic && (RELOC)))                                   \
        text_section ();                                                \
index 9f8ddc1530b7c069dc8ad139e2bd29bd04fa7579..94cefb44f3ebe7d4a31b5621cfdd99ea939b0360 100644 (file)
@@ -363,7 +363,10 @@ dtors_section ()                                                   \
   else if (TREE_CODE (DECL) == VAR_DECL)                               \
     {                                                                  \
       if ((0 && RELOC) /* should be (flag_pic && RELOC) */             \
-         || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL))         \
+         || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL)          \
+         || !DECL_INITIAL (DECL)                                       \
+         || (DECL_INITIAL (DECL) != error_mark_node                    \
+             && !TREE_CONSTANT (DECL_INITIAL (DECL))))                 \
        data_section ();                                                \
       else                                                             \
        const_section ();                                               \
index 1cdf90c5c0a6769fba2e1daa024f63bfbe71ee27..9b5d15cdb9e5f66aad34b98858acee46748b94b4 100644 (file)
@@ -513,7 +513,10 @@ dtors_section ()                                                   \
   else if (TREE_CODE (DECL) == VAR_DECL)                               \
     {                                                                  \
       if ((flag_pic && RELOC)                                          \
-         || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL))         \
+         || !TREE_READONLY (DECL) || TREE_SIDE_EFFECTS (DECL)          \
+         || !DECL_INITIAL (DECL)                                       \
+         || (DECL_INITIAL (DECL) != error_mark_node                    \
+             && !TREE_CONSTANT (DECL_INITIAL (DECL))))                 \
        data_section ();                                                \
       else                                                             \
        const_section ();                                               \
index fc2ff4b4dc5a905cec3d215ee022cb8a1f507dcc..b6f2ebd0a0b746a6f72084eacbcbaca5fbad1cb9 100644 (file)
@@ -253,7 +253,10 @@ const_section ()                                   \
 {                                                                      \
   if (TREE_CODE (T) == VAR_DECL)                                       \
     {                                                                  \
-      if (TREE_READONLY (T) && ! TREE_THIS_VOLATILE (T))               \
+      if (TREE_READONLY (T) && ! TREE_THIS_VOLATILE (T)                        \
+         && DECL_INITIAL (T)                                           \
+         && (DECL_INITIAL (T) == error_mark_node                       \
+             || TREE_CONSTANT (DECL_INITIAL (T))))                     \
        {                                                               \
          if (TREE_PUBLIC (T))                                          \
            const_section ();                                           \