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. Ok for trunk? I noticed that both openbsd.h and mcore/mcore-elf.h have the same problem. Since I can test neither of those, I left them alone. Besides, it should be possible to move the testcase out of gcc.target/i386, simultaneously restricting it to ELF targets. Rainer -- ----------------------------------------------------------------------------- Rainer Orth, Center for Biotechnology, Bielefeld University 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.
# HG changeset patch # Parent d3d7928c798dfe0651a069bb3012e3a8ead27e44 Use decl size in Solaris ASM_DECLARE_OBJECT_NAME [PR102296] diff --git a/gcc/config/i386/sol2.h b/gcc/config/i386/sol2.h --- a/gcc/config/i386/sol2.h +++ b/gcc/config/i386/sol2.h @@ -179,7 +179,7 @@ along with GCC; see the file COPYING3. && (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 --- a/gcc/config/sparc/sol2.h +++ b/gcc/config/sparc/sol2.h @@ -377,7 +377,7 @@ extern const char *host_detect_local_cpu && (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 --- 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 {