https://gcc.gnu.org/g:116b1c5489d12313f015c9ffd46b9394d559709d
commit r15-5564-g116b1c5489d12313f015c9ffd46b9394d559709d Author: Rainer Orth <r...@cebitec.uni-bielefeld.de> Date: Thu Nov 21 13:41:19 2024 +0100 Use decl size in Solaris ASM_DECLARE_OBJECT_NAME [PR102296] Solaris has modified versions of ASM_DECLARE_OBJECT_NAME on both i386 and sparc. When commit ce597aedd79e646c4a5517505088d380239cbfa5 Author: Ilya Enkovich <ilya.enkov...@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 <r...@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. Diff: --- gcc/config/i386/sol2.h | 2 +- gcc/config/sparc/sol2.h | 2 +- gcc/testsuite/gcc.target/i386/struct-size.c | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h index f51fb2ef2f88..06d7ef05d450 100644 --- a/gcc/config/i386/sol2.h +++ b/gcc/config/i386/sol2.h @@ -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); \ } \ \ diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h index f0181d5914c8..f13235e786e5 100644 --- a/gcc/config/sparc/sol2.h +++ b/gcc/config/sparc/sol2.h @@ -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); \ } \ \ diff --git a/gcc/testsuite/gcc.target/i386/struct-size.c b/gcc/testsuite/gcc.target/i386/struct-size.c index d82d730afad4..486aa40bff54 100644 --- a/gcc/testsuite/gcc.target/i386/struct-size.c +++ b/gcc/testsuite/gcc.target/i386/struct-size.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target *-*-linux* } } */ +/* { dg-do compile { target *-*-linux* *-*-solaris* } } */ /* { dg-options "-Wno-pedantic" } */ struct S {