diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 87d86d7217d5ce27624a8426439b93c55b2f8aa0..ece54b6447c8b338fbf56471c93c37f36bf57f6e 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 43d63dab8a6a0b77fcb99fdcd6a315a7a9925e30..6b42699bc202a57d035dfae7ddff32869350ef51 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)); }