]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: rs6000.c (IN_NAMED_SECTION): New macro.
authorBill Schmidt <wschmidt@linux.vnet.ibm.com>
Fri, 4 Apr 2014 15:12:10 +0000 (15:12 +0000)
committerWilliam Schmidt <wschmidt@gcc.gnu.org>
Fri, 4 Apr 2014 15:12:10 +0000 (15:12 +0000)
[gcc]

2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

Backport from mainline r205308
2013-11-23  David Edelsohn  <dje.gcc@gmail.com>

* config/rs6000/rs6000.c (IN_NAMED_SECTION): New macro.
(rs6000_xcoff_select_section): Place decls with stricter alignment
into named sections.
(rs6000_xcoff_unique_section): Allow unique sections for
uninitialized data with strict alignment.

[gcc/testsuite]

2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

Backport from mainline
2013-04-05  David Edelsohn  <dje.gcc@gmail.com>

* gcc.target/powerpc/sd-vsx.c: Skip on AIX.
* gcc.target/powerpc/sd-pwr6.c: Same.

From-SVN: r209115

gcc/ChangeLog
gcc/config/rs6000/rs6000.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/powerpc/sd-pwr6.c
gcc/testsuite/gcc.target/powerpc/sd-vsx.c

index 85b32d9efd595536fb27e2fa128cf6a3da9f1723..4e964ff7de3c491e3ee84886fc51038ed021fa47 100644 (file)
@@ -1,3 +1,14 @@
+2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       Backport from mainline r205308
+       2013-11-23  David Edelsohn  <dje.gcc@gmail.com>
+
+       * config/rs6000/rs6000.c (IN_NAMED_SECTION): New macro.
+       (rs6000_xcoff_select_section): Place decls with stricter alignment
+       into named sections.
+       (rs6000_xcoff_unique_section): Allow unique sections for
+       uninitialized data with strict alignment.
+
 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        Back port from trunk
index d8f9354c06cb4582e43db02b009aa8633e01b117..b257ab1cc9bbb53214090ca7ae01c92fc8ccc58d 100644 (file)
@@ -29165,10 +29165,23 @@ rs6000_xcoff_asm_named_section (const char *name, unsigned int flags,
           name, suffix[smclass], flags & SECTION_ENTSIZE);
 }
 
+#define IN_NAMED_SECTION(DECL) \
+  ((TREE_CODE (DECL) == FUNCTION_DECL || TREE_CODE (DECL) == VAR_DECL) \
+   && DECL_SECTION_NAME (DECL) != NULL_TREE)
+
 static section *
 rs6000_xcoff_select_section (tree decl, int reloc,
-                            unsigned HOST_WIDE_INT align ATTRIBUTE_UNUSED)
+                            unsigned HOST_WIDE_INT align)
 {
+  /* Place variables with alignment stricter than BIGGEST_ALIGNMENT into
+     named section.  */
+  if (align > BIGGEST_ALIGNMENT)
+    {
+      resolve_unique_section (decl, reloc, true);
+      if (IN_NAMED_SECTION (decl))
+       return get_named_section (decl, NULL, reloc);
+    }
+
   if (decl_readonly_section (decl, reloc))
     {
       if (TREE_PUBLIC (decl))
@@ -29206,10 +29219,12 @@ rs6000_xcoff_unique_section (tree decl, int reloc ATTRIBUTE_UNUSED)
 {
   const char *name;
 
-  /* Use select_section for private and uninitialized data.  */
+  /* Use select_section for private data and uninitialized data with
+     alignment <= BIGGEST_ALIGNMENT.  */
   if (!TREE_PUBLIC (decl)
       || DECL_COMMON (decl)
-      || DECL_INITIAL (decl) == NULL_TREE
+      || (DECL_INITIAL (decl) == NULL_TREE
+         && DECL_ALIGN (decl) <= BIGGEST_ALIGNMENT)
       || DECL_INITIAL (decl) == error_mark_node
       || (flag_zero_initialized_in_bss
          && initializer_zerop (DECL_INITIAL (decl))))
index 8cd3a6fd0c83e8b236c7c9c2a72d81cd4f81f10c..a3856675fde8dd375080d82857885d6b4a2c2eb6 100644 (file)
@@ -1,3 +1,11 @@
+2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
+
+       Backport from mainline
+       2013-04-05  David Edelsohn  <dje.gcc@gmail.com>
+
+       * gcc.target/powerpc/sd-vsx.c: Skip on AIX.
+       * gcc.target/powerpc/sd-pwr6.c: Same.
+
 2014-04-04  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>
 
        Back port from trunk
index 947382b7f7bcb2045b1b1e23d3654c61d78411d7..98f7615daef87debb890629993c5b1c1d24ca2cf 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile { target { powerpc*-*-* } } } */
-/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* powerpc-ibm-aix* } { "*" } { "" } } */
 /* { dg-require-effective-target powerpc_vsx_ok } */
 /* { dg-options "-O2 -mcpu=power6 -mhard-dfp" } */
 /* { dg-final { scan-assembler-not   "lfiwzx"   } } */
index 7e41e1e84cc95ee82b4637de642750e4501627f8..7a3c6d8777df0a35f4260cb398fcd39801cc454e 100644 (file)
@@ -1,5 +1,5 @@
 /* { dg-do compile { target { powerpc*-*-* } } } */
-/* { dg-skip-if "" { powerpc*-*-darwin* } { "*" } { "" } } */
+/* { dg-skip-if "" { powerpc*-*-darwin* powerpc-ibm-aix* } { "*" } { "" } } */
 /* { dg-require-effective-target powerpc_vsx_ok } */
 /* { dg-options "-O2 -mcpu=power7 -mhard-dfp" } */
 /* { dg-final { scan-assembler-times "lfiwzx" 2 } } */