diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3dc3f196524..37f188048d2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +Sat Mar 3 03:46:47 2001 J"orn Rennecke + + * tm.texi: Change STRUCT_FORCE_BLK to MEMBER_TYPE_FORCES_BLK. + * config/c4x/c4x.h: Likewise. + * stor-layout.c (compute_record_mode): Likewise. + (layout_type, case ARRAY_TYPE): Use MEMBER_TYPE_FORCES_BLK. + 2001-03-02 Zack Weinberg * configure.in: Kill tm.h. Include the files in the $tm_file diff --git a/gcc/config/c4x/c4x.h b/gcc/config/c4x/c4x.h index 4250bf55702..72155650c98 100644 --- a/gcc/config/c4x/c4x.h +++ b/gcc/config/c4x/c4x.h @@ -370,7 +370,8 @@ extern const char *c4x_rpts_cycles_string, *c4x_cpu_version_string; /* 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) +#define MEMBER_TYPE_FORCES_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. */ diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c index 065d4f61201..152eff10f36 100644 --- a/gcc/stor-layout.c +++ b/gcc/stor-layout.c @@ -1111,12 +1111,12 @@ compute_record_mode (type) if (simple_cst_equal (TYPE_SIZE (type), DECL_SIZE (field))) mode = DECL_MODE (field); -#ifdef STRUCT_FORCE_BLK +#ifdef MEMBER_TYPE_FORCES_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)) + if (mode == VOIDmode && MEMBER_TYPE_FORCES_BLK (field)) return; -#endif /* STRUCT_FORCE_BLK */ +#endif /* MEMBER_TYPE_FORCES_BLK */ } /* If we only have one real field; use its mode. This only applies to @@ -1450,6 +1450,9 @@ layout_type (type) TYPE_MODE (type) = BLKmode; if (TYPE_SIZE (type) != 0 +#ifdef MEMBER_TYPE_FORCES_BLK + && ! MEMBER_TYPE_FORCES_BLK (type) +#endif /* BLKmode elements force BLKmode aggregate; else extract/store fields may lose. */ && (TYPE_MODE (TREE_TYPE (type)) != BLKmode diff --git a/gcc/tm.texi b/gcc/tm.texi index 286e30f957d..9f20053e07d 100644 --- a/gcc/tm.texi +++ b/gcc/tm.texi @@ -1118,9 +1118,9 @@ get from @code{PCC_BITFIELD_TYPE_MATTERS}. Like PCC_BITFIELD_TYPE_MATTERS except that its effect is limited to aligning a bitfield within the structure. -@findex STRUCT_FORCE_BLK -@item STRUCT_FORCE_BLK (@var{field}) -Return 1 if a structure containing @var{field} should be accessed using +@findex MEMBER_TYPE_FORCES_BLK +@item MEMBER_TYPE_FORCES_BLK (@var{field}) +Return 1 if a structure or array containing @var{field} should be accessed using @code{BLKMODE}. Normally, this is not needed. See the file @file{c4x.h} for an example