[gcc/devel/c++-modules] i386: Add __attribute__ ((gcc_struct)) to struct fenv [PR95418]
Nathan Sidwell
nathan@gcc.gnu.org
Thu Jun 11 13:01:44 GMT 2020
https://gcc.gnu.org/g:832c1192eba6dd100e2f757e30ea6373f782ff55
commit 832c1192eba6dd100e2f757e30ea6373f782ff55
Author: Uros Bizjak <ubizjak@gmail.com>
Date: Mon Jun 1 22:23:51 2020 +0200
i386: Add __attribute__ ((gcc_struct)) to struct fenv [PR95418]
Windows ABI (MinGW) is different than Linux ABI when bitfileds are involved.
The following patch adds __attribute__ ((gcc_struct)) to struct fenv in order
to match the layout of x87 state image in memory.
2020-06-01 Uroš Bizjak <ubizjak@gmail.com>
libatomic/ChangeLog:
* config/x86/fenv.c (struct fenv): Add __attribute__ ((gcc_struct)).
libgcc/ChangeLog:
* config/i386/sfp-exceptions.c (struct fenv):
Add __attribute__ ((gcc_struct)).
libgfortran/ChangeLog:
PR libfortran/95418
* config/fpu-387.h (struct fenv): Add __attribute__ ((gcc_struct)).
Diff:
---
libatomic/config/x86/fenv.c | 2 +-
libgcc/config/i386/sfp-exceptions.c | 2 +-
libgfortran/config/fpu-387.h | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/libatomic/config/x86/fenv.c b/libatomic/config/x86/fenv.c
index 88622c613f3..138a67ff217 100644
--- a/libatomic/config/x86/fenv.c
+++ b/libatomic/config/x86/fenv.c
@@ -45,7 +45,7 @@ struct fenv
unsigned int __data_offset;
unsigned short int __data_selector;
unsigned short int __unused5;
-};
+} __attribute__ ((gcc_struct));
#ifdef __SSE_MATH__
# define __math_force_eval_div(x, y) \
diff --git a/libgcc/config/i386/sfp-exceptions.c b/libgcc/config/i386/sfp-exceptions.c
index 72cb0f4d3bb..3aed0af7c46 100644
--- a/libgcc/config/i386/sfp-exceptions.c
+++ b/libgcc/config/i386/sfp-exceptions.c
@@ -39,7 +39,7 @@ struct fenv
unsigned int __data_offset;
unsigned short int __data_selector;
unsigned short int __unused5;
-};
+} __attribute__ ((gcc_struct));
#ifdef __SSE_MATH__
# define __math_force_eval_div(x, y) \
diff --git a/libgfortran/config/fpu-387.h b/libgfortran/config/fpu-387.h
index 8b5e758c2ca..7ff5acdc933 100644
--- a/libgfortran/config/fpu-387.h
+++ b/libgfortran/config/fpu-387.h
@@ -85,7 +85,7 @@ struct fenv
unsigned short int __data_selector;
unsigned short int __unused5;
unsigned int __mxcsr;
-};
+} __attribute__ ((gcc_struct));
/* Check we can actually store the FPU state in the allocated size. */
_Static_assert (sizeof(struct fenv) <= (size_t) GFC_FPE_STATE_BUFFER_SIZE,
More information about the Gcc-cvs
mailing list