]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Use decl size in Solaris ASM_DECLARE_OBJECT_NAME [PR102296]
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Thu, 21 Nov 2024 12:41:19 +0000 (13:41 +0100)
committerRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Thu, 21 Nov 2024 12:41:19 +0000 (13:41 +0100)
Solaris has modified versions of ASM_DECLARE_OBJECT_NAME on both i386
and sparc.  When

commit ce597aedd79e646c4a5517505088d380239cbfa5
Author: Ilya Enkovich <ilya.enkovich@intel.com>
Date:   Thu Aug 7 08:04:55 2014 +0000

    elfos.h (ASM_DECLARE_OBJECT_NAME): Use decl size instead of type size.

was applied, those were missed.  At the same time, the testcase was
restricted to Linux though there's nothing Linux-specific in there, so
the error remained undetected.

This patch fixes the definitions to match elfos.h and enables the test
on Solaris, too.

Bootstrapped without regressions on i386-pc-solaris2.11 and
sparc-sun-solaris2.11.

2024-11-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

gcc/testsuite:
PR target/102296
* gcc.target/i386/struct-size.c: Enable on *-*-solaris*.

gcc:
PR target/102296
* config/i386/sol2.h (ASM_DECLARE_OBJECT_NAME): Use decl size
instead of type size.
* config/sparc/sol2.h (ASM_DECLARE_OBJECT_NAME): Likewise.

gcc/config/i386/sol2.h
gcc/config/sparc/sol2.h
gcc/testsuite/gcc.target/i386/struct-size.c

index f51fb2ef2f88e4fdf2c2c2d446fb78e93ed9e30d..06d7ef05d45079842bd1a3b415ee3e6f72cc2349 100644 (file)
@@ -179,7 +179,7 @@ along with GCC; see the file COPYING3.  If not see
          && (DECL) && DECL_SIZE (DECL))                        \
        {                                                       \
          size_directive_output = 1;                            \
-         size = int_size_in_bytes (TREE_TYPE (DECL));          \
+         size = tree_to_uhwi (DECL_SIZE_UNIT (DECL));          \
          ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size);         \
        }                                                       \
                                                                \
index f0181d5914c8fc0dbddc1d85714a5c235d96d6b0..f13235e786e52332fa92bbc004bc0c6430e085d1 100644 (file)
@@ -377,7 +377,7 @@ extern const char *host_detect_local_cpu (int argc, const char **argv);
          && (DECL) && DECL_SIZE (DECL))                        \
        {                                                       \
          size_directive_output = 1;                            \
-         size = int_size_in_bytes (TREE_TYPE (DECL));          \
+         size = tree_to_uhwi (DECL_SIZE_UNIT (DECL));          \
          ASM_OUTPUT_SIZE_DIRECTIVE (FILE, NAME, size);         \
        }                                                       \
                                                                \
index d82d730afad4e077abb1bed0f97fe7deab172d7e..486aa40bff54ec18315d13bb67c351045e12c1e1 100644 (file)
@@ -1,4 +1,4 @@
-/* { dg-do compile { target *-*-linux* } } */
+/* { dg-do compile { target *-*-linux* *-*-solaris* } } */
 /* { dg-options "-Wno-pedantic" } */
 
 struct S {