Solaris has modified versions of ASM_DECLARE_OBJECT_NAME on both i386
and sparc. When
commit ce597aedd79e646c4a5517505088d380239cbfa5
Author: Ilya Enkovich <[email protected]>
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 <[email protected]>
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 {