bfin.h (LOCAL_ALIGNMENT): Define.
* config/bfin/bfin.h (LOCAL_ALIGNMENT): Define. * config/bfin/bfin.c (bfin_local_alignment): New function. * config/bfin/bfin-protos.h (bfin_local_alignment): Declare it. From-SVN: r124570
This commit is contained in:
parent
0416068158
commit
520c62adcd
|
@ -1,3 +1,9 @@
|
|||
2007-05-08 Bernd Schmidt <bernd.schmidt@analog.com>
|
||||
|
||||
* config/bfin/bfin.h (LOCAL_ALIGNMENT): Define.
|
||||
* config/bfin/bfin.c (bfin_local_alignment): New function.
|
||||
* config/bfin/bfin-protos.h (bfin_local_alignment): Declare it.
|
||||
|
||||
2007-05-08 Chao-ying Fu <fu@mips.com>
|
||||
|
||||
* doc/md.texi (msub@var{m}@var{n}4, usub@var{m}@var{n}4): Document.
|
||||
|
|
|
@ -86,6 +86,7 @@ extern void override_options (void);
|
|||
extern void asm_conditional_branch (rtx, rtx *, int, int);
|
||||
extern rtx bfin_gen_compare (rtx, Mmode);
|
||||
|
||||
extern int bfin_local_alignment (tree, int);
|
||||
extern int bfin_return_in_memory (tree);
|
||||
extern void initialize_trampoline (rtx, rtx, rtx);
|
||||
extern bool bfin_legitimate_address_p (Mmode, rtx, int);
|
||||
|
|
|
@ -3045,6 +3045,24 @@ bfin_expand_movmem (rtx dst, rtx src, rtx count_exp, rtx align_exp)
|
|||
return false;
|
||||
}
|
||||
|
||||
/* Compute the alignment for a local variable.
|
||||
TYPE is the data type, and ALIGN is the alignment that
|
||||
the object would ordinarily have. The value of this macro is used
|
||||
instead of that alignment to align the object. */
|
||||
|
||||
int
|
||||
bfin_local_alignment (tree type, int align)
|
||||
{
|
||||
/* Increasing alignment for (relatively) big types allows the builtin
|
||||
memcpy can use 32 bit loads/stores. */
|
||||
if (TYPE_SIZE (type)
|
||||
&& TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST
|
||||
&& (TREE_INT_CST_LOW (TYPE_SIZE (type)) > 8
|
||||
|| TREE_INT_CST_HIGH (TYPE_SIZE (type))) && align < 32)
|
||||
return 32;
|
||||
return align;
|
||||
}
|
||||
|
||||
/* Implement TARGET_SCHED_ISSUE_RATE. */
|
||||
|
||||
static int
|
||||
|
|
|
@ -227,6 +227,18 @@ extern const char *bfin_library_id_string;
|
|||
|
||||
/*#define DATA_ALIGNMENT(TYPE, BASIC-ALIGN) for arrays.. */
|
||||
|
||||
/* If defined, a C expression to compute the alignment for a local
|
||||
variable. TYPE is the data type, and ALIGN is the alignment that
|
||||
the object would ordinarily have. The value of this macro is used
|
||||
instead of that alignment to align the object.
|
||||
|
||||
If this macro is not defined, then ALIGN is used.
|
||||
|
||||
One use of this macro is to increase alignment of medium-size
|
||||
data to make it all fit in fewer cache lines. */
|
||||
|
||||
#define LOCAL_ALIGNMENT(TYPE, ALIGN) bfin_local_alignment ((TYPE), (ALIGN))
|
||||
|
||||
/* Make strings word-aligned so strcpy from constants will be faster. */
|
||||
#define CONSTANT_ALIGNMENT(EXP, ALIGN) \
|
||||
(TREE_CODE (EXP) == STRING_CST \
|
||||
|
|
Loading…
Reference in New Issue