pa.c (hppa_expand_prologue): Do pic register save in frame marker without adding a frame note.
* pa.c (hppa_expand_prologue): Do pic register save in frame marker without adding a frame note. * pa.md (allocate_stack): Save pic register in new frame marker when generating pic code. From-SVN: r71709
This commit is contained in:
parent
3eaf1216b9
commit
3ffa9dc1b5
@ -1,3 +1,10 @@
|
||||
2003-09-23 John Davind Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
* pa.c (hppa_expand_prologue): Do pic register save in frame marker
|
||||
without adding a frame note.
|
||||
* pa.md (allocate_stack): Save pic register in new frame marker when
|
||||
generating pic code.
|
||||
|
||||
2003-09-23 Kelley Cook <kelleycook@wideopenwest.com>
|
||||
|
||||
* cgraphunit.c (cgraph_expand_all_functions): Renamed from
|
||||
|
@ -3475,9 +3475,17 @@ hppa_expand_prologue (void)
|
||||
when generating PIC code. FIXME: What is the correct thing
|
||||
to do for functions which make no calls and allocate no
|
||||
frame? Do we need to allocate a frame, or can we just omit
|
||||
the save? For now we'll just omit the save. */
|
||||
the save? For now we'll just omit the save.
|
||||
|
||||
We don't want a note on this insn as the frame marker can
|
||||
move if there is a dynamic stack allocation. */
|
||||
if (flag_pic && actual_fsize != 0 && !TARGET_64BIT)
|
||||
store_reg (PIC_OFFSET_TABLE_REGNUM, -32, STACK_POINTER_REGNUM);
|
||||
{
|
||||
rtx addr = gen_rtx_PLUS (word_mode, stack_pointer_rtx, GEN_INT (-32));
|
||||
|
||||
emit_move_insn (gen_rtx_MEM (word_mode, addr), pic_offset_table_rtx);
|
||||
|
||||
}
|
||||
|
||||
/* Align pointer properly (doubleword boundary). */
|
||||
offset = (offset + 7) & ~7;
|
||||
|
@ -8061,17 +8061,22 @@
|
||||
""
|
||||
"
|
||||
{
|
||||
rtx addr;
|
||||
|
||||
/* Since the stack grows upward, we need to store virtual_stack_dynamic_rtx
|
||||
in operand 0 before adjusting the stack. */
|
||||
emit_move_insn (operands[0], virtual_stack_dynamic_rtx);
|
||||
anti_adjust_stack (operands[1]);
|
||||
if (TARGET_HPUX_UNWIND_LIBRARY)
|
||||
{
|
||||
rtx dst = gen_rtx_MEM (word_mode,
|
||||
gen_rtx_PLUS (word_mode, stack_pointer_rtx,
|
||||
GEN_INT (TARGET_64BIT ? -8 : -4)));
|
||||
|
||||
emit_move_insn (dst, frame_pointer_rtx);
|
||||
addr = gen_rtx_PLUS (word_mode, stack_pointer_rtx,
|
||||
GEN_INT (TARGET_64BIT ? -8 : -4));
|
||||
emit_move_insn (gen_rtx_MEM (word_mode, addr), frame_pointer_rtx);
|
||||
}
|
||||
if (!TARGET_64BIT && flag_pic)
|
||||
{
|
||||
rtx addr = gen_rtx_PLUS (word_mode, stack_pointer_rtx, GEN_INT (-32));
|
||||
emit_move_insn (gen_rtx_MEM (word_mode, addr), pic_offset_table_rtx);
|
||||
}
|
||||
DONE;
|
||||
}")
|
||||
|
Loading…
Reference in New Issue
Block a user