aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Weigand <uweigand@de.ibm.com>2003-06-12 13:47:52 +0000
committerUlrich Weigand <uweigand@gcc.gnu.org>2003-06-12 13:47:52 +0000
commit109480b1c5e848f7411da6caad8dad560e66d13a (patch)
tree042fd94d21a132bb5ad0934ec711aae6139fc996
parentf7df23be90f2f2d73234546a192271007c29d5cc (diff)
downloadgcc-109480b1c5e848f7411da6caad8dad560e66d13a.zip
gcc-109480b1c5e848f7411da6caad8dad560e66d13a.tar.gz
gcc-109480b1c5e848f7411da6caad8dad560e66d13a.tar.bz2
s390.c (s390_emit_prologue): Use LA instead of AR to initialize GOT register.
* config/s390/s390.c (s390_emit_prologue): Use LA instead of AR to initialize GOT register. From-SVN: r67829
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/s390/s390.c6
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 87d86d7..ece54b6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2003-06-12 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * config/s390/s390.c (s390_emit_prologue): Use LA instead of AR
+ to initialize GOT register.
+
2003-06-12 Roger Sayle <roger@eyesopen.com>
* fold-const.c (tree_expr_nonnegative_p): Add support for
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 43d63da..6b42699 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -5497,8 +5497,10 @@ s390_emit_prologue ()
REG_NOTES(insn) = gen_rtx_EXPR_LIST (REG_MAYBE_DEAD, NULL_RTX,
REG_NOTES (insn));
- insn = emit_insn (gen_add2_insn (pic_offset_table_rtx,
- gen_rtx_REG (Pmode, BASE_REGISTER)));
+ got_symbol = gen_rtx_REG (Pmode, BASE_REGISTER);
+ got_symbol = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, got_symbol), 101);
+ got_symbol = gen_rtx_PLUS (Pmode, got_symbol, pic_offset_table_rtx);
+ insn = emit_move_insn (pic_offset_table_rtx, got_symbol);
REG_NOTES(insn) = gen_rtx_EXPR_LIST (REG_MAYBE_DEAD, NULL_RTX,
REG_NOTES (insn));
}