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:
parent
8f496bc2d5
commit
7f7680a9a4
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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:
|
||||
|
||||
|
|
Loading…
Reference in New Issue