[SH] double precision floating point dwarf fix
2009-04-02 Christian Bruel <christian.bruel@st.com> * config/sh/sh.c (sh_dwarf_register_span): New function. (TARGET_DWARF_REGISTER_SPAN): Define. * config/sh/sh-protos.h (sh_dwarf_register_span): Declare. From-SVN: r145448
This commit is contained in:
parent
2f0fa28e1f
commit
63a9de54d8
@ -1,3 +1,9 @@
|
||||
2009-04-02 Christian Bruel <christian.bruel@st.com>
|
||||
|
||||
* config/sh/sh.c (sh_dwarf_register_span): New function.
|
||||
(TARGET_DWARF_REGISTER_SPAN): Define.
|
||||
* config/sh/sh-protos.h (sh_dwarf_register_span): Declare.
|
||||
|
||||
2009-04-02 Ira Rosen <irar@il.ibm.com>
|
||||
|
||||
PR tree-optimization/39595
|
||||
|
@ -160,6 +160,7 @@ extern void sh_function_arg_advance (CUMULATIVE_ARGS *, enum machine_mode, tree,
|
||||
extern int sh_pass_in_reg_p (CUMULATIVE_ARGS *, enum machine_mode, tree);
|
||||
extern void sh_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, signed int, enum machine_mode);
|
||||
extern bool sh_promote_prototypes (const_tree);
|
||||
extern rtx sh_dwarf_register_span (rtx);
|
||||
|
||||
extern rtx replace_n_hard_rtx (rtx, rtx *, int , int);
|
||||
extern int shmedia_cleanup_truncate (rtx *, void *);
|
||||
|
@ -405,6 +405,9 @@ static int sh2a_function_vector_p (tree);
|
||||
#undef TARGET_MACHINE_DEPENDENT_REORG
|
||||
#define TARGET_MACHINE_DEPENDENT_REORG sh_reorg
|
||||
|
||||
#undef TARGET_DWARF_REGISTER_SPAN
|
||||
#define TARGET_DWARF_REGISTER_SPAN sh_dwarf_register_span
|
||||
|
||||
#ifdef HAVE_AS_TLS
|
||||
#undef TARGET_HAVE_TLS
|
||||
#define TARGET_HAVE_TLS true
|
||||
@ -7426,6 +7429,26 @@ sh_gimplify_va_arg_expr (tree valist, tree type, gimple_seq *pre_p,
|
||||
return result;
|
||||
}
|
||||
|
||||
/* 64 bit floating points memory transfers are paired single precision loads
|
||||
or store. So DWARF information needs fixing in little endian (unless
|
||||
PR=SZ=1 in FPSCR). */
|
||||
rtx
|
||||
sh_dwarf_register_span (rtx reg)
|
||||
{
|
||||
unsigned regno = REGNO (reg);
|
||||
|
||||
if (WORDS_BIG_ENDIAN || GET_MODE (reg) != DFmode)
|
||||
return NULL_RTX;
|
||||
|
||||
return
|
||||
gen_rtx_PARALLEL (VOIDmode,
|
||||
gen_rtvec (2,
|
||||
gen_rtx_REG (SFmode,
|
||||
DBX_REGISTER_NUMBER (regno+1)),
|
||||
gen_rtx_REG (SFmode,
|
||||
DBX_REGISTER_NUMBER (regno))));
|
||||
}
|
||||
|
||||
bool
|
||||
sh_promote_prototypes (const_tree type)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user