aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-01-03 11:59:12 -0700
committerJeff Law <law@gcc.gnu.org>1993-01-03 11:59:12 -0700
commit9d32f4a54a6978fe264486c3405ed0f380d1f3f7 (patch)
tree017c4a700c68ebf6b3e809441fa95df7929220d1 /gcc
parent81f433e4372e8a05f26c789bde3a292860d1ed7a (diff)
downloadgcc-9d32f4a54a6978fe264486c3405ed0f380d1f3f7.zip
gcc-9d32f4a54a6978fe264486c3405ed0f380d1f3f7.tar.gz
gcc-9d32f4a54a6978fe264486c3405ed0f380d1f3f7.tar.bz2
pa.c (hppa_save_pic_table_rtx): New variable.
* pa.c (hppa_save_pic_table_rtx): New variable. (finalize_pic): Setup hppa_save_pic_table_rtx.. From-SVN: r3068
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.c15
1 files changed, 13 insertions, 2 deletions
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index ab7b218..2e36846 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -41,6 +41,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
rtx hppa_compare_op0, hppa_compare_op1;
enum cmp_type hppa_branch_type;
+rtx hppa_save_pic_table_rtx;
+
/* Set by the FUNCTION_PROFILER macro. */
int hp_profile_labelno;
@@ -492,9 +494,18 @@ initialize_pic ()
void
finalize_pic ()
{
- /* Need to emit this whether or not we obey regdecls,
- since setjmp/longjmp can cause life info to screw up. */
+ if (hppa_save_pic_table_rtx)
+ {
+ emit_insn_after (gen_rtx (SET, VOIDmode,
+ hppa_save_pic_table_rtx,
+ gen_rtx (REG, Pmode, 19)),
+ get_insns ());
+ /* Need to emit this whether or not we obey regdecls,
+ since setjmp/longjmp can cause life info to screw up. */
+ hppa_save_pic_table_rtx = 0;
+ }
emit_insn (gen_rtx (USE, VOIDmode, pic_offset_table_rtx));
+
}
/* For the HPPA, REG and REG+CONST is cost 0