stor-layout.c (layout_type): Use FORCE_STRUCT_BLK.

* stor-layout.c (layout_type): Use FORCE_STRUCT_BLK.
	* tm.texi (FORCE_STRUCT_BLK): Document.
	* config/c4x/c4x.h (FORCE_STRUCT_BLK): New macro.

From-SVN: r31385
This commit is contained in:
Michael Hayes 2000-01-13 10:43:35 +00:00 committed by Michael Hayes
parent 8f496bc2d5
commit 7f7680a9a4
4 changed files with 26 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2000-01-13 Michael Hayes <m.hayes@elec.canterbury.ac.nz>
* stor-layout.c (layout_type): Use FORCE_STRUCT_BLK.
* tm.texi (FORCE_STRUCT_BLK): Document.
* config/c4x/c4x.h (FORCE_STRUCT_BLK): New macro.
Wed Jan 12 23:12:47 2000 Hans-Peter Nilsson <hp@axis.com>
* config/ns32k/ns32k.md: Revert Jan 9 change.

View File

@ -352,6 +352,10 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string;
#define TARGET_FLOAT_FORMAT C4X_FLOAT_FORMAT
#define MAX_FIXED_MODE_SIZE 64 /* HImode. */
/* If a structure has a floating point field then force structure
to have BLKMODE. */
#define STRUCT_FORCE_BLK(FIELD) (TREE_CODE (TREE_TYPE (FIELD)) == REAL_TYPE)
/* Number of bits in the high and low parts of a two stage
load of an immediate constant. */
#define BITS_PER_HIGH 16

View File

@ -1057,6 +1057,13 @@ layout_type (type)
register instead of forcing it to live in the stack. */
if (simple_cst_equal (TYPE_SIZE (type), DECL_SIZE (field)))
mode = DECL_MODE (field);
#ifdef STRUCT_FORCE_BLK
/* With some targets, eg. c4x, it is sub-optimal
to access an aligned BLKmode structure as a scalar. */
if (mode == VOIDmode && STRUCT_FORCE_BLK (field))
goto record_lose;
#endif /* STRUCT_FORCE_BLK */
}
if (mode != VOIDmode)

View File

@ -413,6 +413,15 @@ if any, in all upper-case letters. For example, it might be @samp{GCC}
or @samp{BINUTILS}. If the package is part of the a vendor-supplied
operating system, code the component name as @samp{0}.
@findex STRUCT_FORCE_BLK
@item STRUCT_FORCE_BLK (@var{field})
Return 1 if a structure containing @var{field} should be accessed using
@code{BLKMODE}.
Normally, this is not needed. See the file @file{c4x.h} for an example
of how to use this macro to prevent a structure having a floating point
field from being accessed in an integer mode.
For example, here is the definition used for VAX/VMS: