Commit 3ffa9dc1 by John David Anglin Committed by John David Anglin

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
parent 3eaf1216
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> 2003-09-23 Kelley Cook <kelleycook@wideopenwest.com>
* cgraphunit.c (cgraph_expand_all_functions): Renamed from * cgraphunit.c (cgraph_expand_all_functions): Renamed from
......
...@@ -3475,9 +3475,17 @@ hppa_expand_prologue (void) ...@@ -3475,9 +3475,17 @@ hppa_expand_prologue (void)
when generating PIC code. FIXME: What is the correct thing when generating PIC code. FIXME: What is the correct thing
to do for functions which make no calls and allocate no to do for functions which make no calls and allocate no
frame? Do we need to allocate a frame, or can we just omit 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) 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). */ /* Align pointer properly (doubleword boundary). */
offset = (offset + 7) & ~7; offset = (offset + 7) & ~7;
......
...@@ -8061,17 +8061,22 @@ ...@@ -8061,17 +8061,22 @@
"" ""
" "
{ {
rtx addr;
/* Since the stack grows upward, we need to store virtual_stack_dynamic_rtx /* Since the stack grows upward, we need to store virtual_stack_dynamic_rtx
in operand 0 before adjusting the stack. */ in operand 0 before adjusting the stack. */
emit_move_insn (operands[0], virtual_stack_dynamic_rtx); emit_move_insn (operands[0], virtual_stack_dynamic_rtx);
anti_adjust_stack (operands[1]); anti_adjust_stack (operands[1]);
if (TARGET_HPUX_UNWIND_LIBRARY) if (TARGET_HPUX_UNWIND_LIBRARY)
{ {
rtx dst = gen_rtx_MEM (word_mode, addr = gen_rtx_PLUS (word_mode, stack_pointer_rtx,
gen_rtx_PLUS (word_mode, stack_pointer_rtx, GEN_INT (TARGET_64BIT ? -8 : -4));
GEN_INT (TARGET_64BIT ? -8 : -4))); emit_move_insn (gen_rtx_MEM (word_mode, addr), frame_pointer_rtx);
}
emit_move_insn (dst, 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; DONE;
}") }")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment