[ARM/FDPIC v6 07/24] [ARM] FDPIC: Avoid saving/restoring r9 on stack since it is read-only
2019-09-10 Christophe Lyon <christophe.lyon@st.com> Mickaël Guêné <mickael.guene@st.com> gcc/ * config/arm/arm.h (PIC_REGISTER_MAY_NEED_SAVING): New helper. * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Handle FDPIC. Co-Authored-By: Mickaël Guêné <mickael.guene@st.com> From-SVN: r275569
This commit is contained in:
parent
5d727a4b20
commit
4997c9aed4
3 changed files with 16 additions and 6 deletions
|
@ -1,3 +1,10 @@
|
|||
2019-09-10 Christophe Lyon <christophe.lyon@st.com>
|
||||
Mickaël Guêné <mickael.guene@st.com>
|
||||
|
||||
* config/arm/arm.h (PIC_REGISTER_MAY_NEED_SAVING): New helper.
|
||||
* config/arm/arm.c (arm_compute_save_reg0_reg12_mask): Handle
|
||||
FDPIC.
|
||||
|
||||
2019-09-10 Christophe Lyon <christophe.lyon@st.com>
|
||||
Mickaël Guêné <mickael.guene@st.com>
|
||||
|
||||
|
|
|
@ -19571,9 +19571,7 @@ arm_compute_save_reg0_reg12_mask (void)
|
|||
save_reg_mask |= (1 << reg);
|
||||
|
||||
/* Also save the pic base register if necessary. */
|
||||
if (flag_pic
|
||||
&& !TARGET_SINGLE_PIC_BASE
|
||||
&& arm_pic_register != INVALID_REGNUM
|
||||
if (PIC_REGISTER_MAY_NEED_SAVING
|
||||
&& crtl->uses_pic_offset_table)
|
||||
save_reg_mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
|
||||
}
|
||||
|
@ -19605,9 +19603,7 @@ arm_compute_save_reg0_reg12_mask (void)
|
|||
|
||||
/* If we aren't loading the PIC register,
|
||||
don't stack it even though it may be live. */
|
||||
if (flag_pic
|
||||
&& !TARGET_SINGLE_PIC_BASE
|
||||
&& arm_pic_register != INVALID_REGNUM
|
||||
if (PIC_REGISTER_MAY_NEED_SAVING
|
||||
&& (df_regs_ever_live_p (PIC_OFFSET_TABLE_REGNUM)
|
||||
|| crtl->uses_pic_offset_table))
|
||||
save_reg_mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
|
||||
|
|
|
@ -1960,6 +1960,13 @@ extern unsigned arm_pic_register;
|
|||
|| label_mentioned_p (get_pool_constant (X))))) \
|
||||
|| tls_mentioned_p (X))
|
||||
|
||||
/* We may want to save the PIC register if it is a dedicated one. */
|
||||
#define PIC_REGISTER_MAY_NEED_SAVING \
|
||||
(flag_pic \
|
||||
&& !TARGET_SINGLE_PIC_BASE \
|
||||
&& !TARGET_FDPIC \
|
||||
&& arm_pic_register != INVALID_REGNUM)
|
||||
|
||||
/* We need to know when we are making a constant pool; this determines
|
||||
whether data needs to be in the GOT or can be referenced via a GOT
|
||||
offset. */
|
||||
|
|
Loading…
Add table
Reference in a new issue